我有一個視圖控制器,它包含一個滾動視圖,它佔用了整個可用的窗口。有一個UIView作爲容器視圖使用,它是scrollview的子視圖,幷包含所有其他視圖和控件。當視圖控制器初始化時,有很多配置會根據Web服務的數據來顯示哪些視圖和控件。iOS按鈕嵌套在視圖中沒有接收到觸摸
附加到視圖控制器的主視圖是一個輕擊手勢識別器。我發現我需要檢查[觸摸視圖]以查看它是否是按鈕或我不希望手勢識別器解釋的任何其他控件,並且將一個NO值從
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)觸摸,如果它是這些控制的一次
委託方法。
所以在這個容器視圖是另一個(UIView)子視圖,並在該子視圖中是一個按鈕。視圖控制器是導航控制器堆棧的一部分,並且當這僅作爲導航控制器呈現時,它們都可以很好地工作。
當導航控制器顯示在標籤欄的一個標籤上時,那麼當我點擊按鈕時,它不會識別該按鈕上的輕擊。當我在上面的委託方法中斷時,[touch view]是UIView,而不是UIButton。
如果我按住按鈕一秒左右,那麼它確實識別按鈕,並將消息轉發到按鈕。
對此有何看法?我可以發佈代碼,只是不知道要發佈什麼...
找到它。容器視圖具有靈活的高度自動調整掩碼集,因此由於選項卡欄而被設置爲較小的高度。 – mickm