![](/img/trans.png)
[英]UITapGestureRecognizer does not respond to subview area outside parent view
[英]UITapGestureRecognizer on UIView and Its Subview Respond Together When Subview Is Tapped
UITapGestureRecognizer
適用於UIImageView
及其子視圖( UITextView
)。 但是,當我點擊子視圖時,接收器變為子視圖及其父視圖(即UIImageView
+ UITextView
)。 但它應該只是subview,因為那是我點擊的那個。 我假設嵌套手勢會先做出反應,但顯然父母會接到第一個敲擊然后它會轉到孩子身上。
因此,針對各種場景存在不同的解決方案(與我的不同,而是滾動視圖內的按鈕沖突)。 如何在沒有可能的子類化和iOS 6+支持的情況下輕松解決我的問題? 我嘗試在UIImageView
上推遲UIGestureRecognizer
啟動觸摸,我嘗試將cancelsTouchesInView
設置為NO
- 一切都沒有運氣。
請嘗試以下代碼:
使< UIGestureRecognizerDelegate
>符合您的課程。
設置yourGesture.delegate = self
;
然后添加此委托方法:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
// return YES (the default) to allow the gesture recognizer to examine the touch object, NO to prevent the gesture recognizer from seeing this touch object.
if([touch.view isKindOfClass: [UITextView class]] == YES)] {
return YES;
}
else {
return NO;
}
}
希望它能解決你的問題。 享受編碼.. !!!!
這正是它應該做的。 視圖層次結構類似於樹結構,並且在觸摸手勢期間從根節點開始遍歷。 您的父視圖很可能首先接收手勢然后接收其子視圖。 遍歷跳過了節點
userInteractionEnabled = NO。
因為,你沒有任何代碼我無法幫你玩這個標志。 更通用的解決方案是始終僅為您的parentView設置手勢,並且在手勢委托中檢查坐標是否屬於任何一個子視圖,如果是,則調用您的子視圖的手勢方法。 不是一個干凈的方法,但有效。 !
您應該實現UIGestureRecognizer委托方法,並在識別出多個手勢時將正確的策略應用於手勢
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.