這個情況是因為使用了一個BaseViewcontroller,(繼承的ViewCointroller 並添加微UInavigationViewcontroller ,便於壓棧),其他的視圖都是繼承它的,在BaseViewController 中的導航欄中的按鈕中添加響應棧事件,當MoreBtn.hidden == NO 的時候,我就在viewWillAppear中創建MoreView,也就是這個view。 OK , 我需要的是:當點擊MoreBtn的時候點擊一下就出現MoreView,再次點擊需要MoreView消失,點擊其它地方也是MoreView消失,剛開始以為很簡單,使用touchBegin以為就可以了,但是實際上是需要點擊在父視圖中的view才有回應,目前的viewController中除了導覽列以下都是一個tableView,不要以為你繼承了BaseViewcontroller之後,你點擊的任何地方它都會回應,你必須給tableView添加點擊事件才有事件回應,對此我使用的Hidden的話就沒辦法回應,只能設定frame。
我覺得這個你得自己看情況,用Hidden確實很方便,但是今天我使用的時候發現並不好控制,不是邏輯不好控制,只是當你在父視圖中添加一個view的時候,如果你之前添加了,那麼就在下面,這樣你肯定是不能去點擊了,所以當我需要點擊它上面視圖的時候它能消失,可是它本身上面就有按鈕,也需要事件響應,這樣你根本點擊不了上面,當然你可以讓它成為第一層,這個雖然沒嘗試,但是可以知道,我使用frame就可以讓它在上面,而實用hidden卻是在下面,
這個情況是因為使用了一個BaseViewcontroller,(繼承的ViewCointroller 並添加微UInavigationViewcontroller ,便於壓棧),其他的視圖都是繼承它的,在BaseViewController 中的導航欄中的按鈕中添加響應棧事件,當MoreBtn.hidden == NO 的時候,我就在viewWillAppear中創建MoreView,也就是這個view。 OK , 我需要的是:當點擊MoreBtn的時候點擊一下就出現MoreView,再次點擊需要MoreView消失,點擊其它地方也是MoreView消失,剛開始以為很簡單,使用touchBegin以為就可以了,但是實際上是需要點擊在父視圖中的view才有回應,目前的viewController中除了導覽列以下都是一個tableView,不要以為你繼承了BaseViewcontroller之後,你點擊的任何地方它都會回應,你必須給tableView添加點擊事件才有事件回應,對此我使用的Hidden的話就沒辦法回應,只能設定frame。
本來是想來尋找區別的,剛看到題目,就來討論了一下。
===========
不好意思,之前回答錯了,應該不是frame的原因,後來發現是touch方法的原因,因為那個view也屬於self.view,所以,touch方法中要它消失的時候,點擊它自己也會消失,這樣是不對滴,所以我就規定了它點擊的範圍使用的CGpoint,包含在導航欄範圍的時候就消失,確實是很笨的方法,如果還有啥好方法,再研究,不好意思,看來hidden和frame的功能其實是可以相同的也許還有什麼需要我們去探索吧!加油