我有一個處理用戶手勢的自定義表視圖單元。但是,即使我將exclusiveTouch設置爲YES,即使y值發生任何變化,即使我正處於處理觸摸事件的過程中,也會開始滾動。當我處理單元格中的觸摸事件時,如何防止表格滾動?防止觸摸被父表視圖處理
1
A
回答
2
所以,正確的有條件地處理不幸的方式取決於superView。對於某些視圖和事件(如UITableView選擇),您需要將touchesBegan:事件轉發到nextResponder,跟蹤您的手勢,將touchesMoved:events移動到下一個響應者,直到您檢測到您的手勢,並在觸發時發送touchesCancelled:到下一個響應者,並隱藏下一個響應者的所有其他事件(touchesEnded:並touchesCancelled :),直到你收到touchesEnded:或touchesCancelled:自己。
但是,在UIScrollView中,有一個特殊情況,它不依賴於作爲nextResponder處理滾動事件(滾動最有可能在hitTest方法中檢測到:)。因此,無論您是否在轉發或事件方面做了什麼,滾動仍然會發生。防止滾動發生的唯一方法是在檢測到手勢後立即禁用父視圖上的滾動,然後在滾動結束或取消時重新啓用滾動。
1
我認爲你需要繼承的UITableView和實施則hitTest:withEvent:方法這是我做的一個自定義單元格我建做左,右細胞內滑動:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
NSIndexPath *indexPath = [self indexPathForRowAtPoint:point];
UITableViewCell *cell = [self cellForRowAtIndexPath:indexPath];
if ([cell isKindOfClass:[MyCustomCell class]])
{
return cell;
}
return [super hitTest:point withEvent:event];
}
相關問題
- 1. 處理大於其父視圖的子視圖的觸摸
- 2. 防止觸摸一個視圖android
- 3. 如何防止視圖被「按下」觸摸事件
- 4. 地圖視圖觸摸事件處理
- 5. 當父視圖被觸摸時關閉子視圖
- 6. 如何在父視圖中處理子視圖的觸摸事件
- 7. 防止圖像視圖在觸摸和旋轉上重疊
- 8. 防止觸摸發生在視圖後面?
- 9. 隱藏標籤欄視圖可以防止觸摸
- 10. 將UIView添加到UIButton子視圖可防止觸摸事件
- 11. Android視圖在父滾動時停止接收觸摸事件
- 12. 處理觸摸在
- 13. UIImageView觸摸處理
- 14. 防止在觸摸外面觸碰BottomSheetDialogFragment
- 15. 觸摸被禁用的充氣視圖
- 16. 如何防止UILabel在Swift中阻塞對父UIButton的觸摸?
- 17. 如何防止父UIView從UIButton接收觸摸?
- 18. 防止uitableview在水平觸摸後取消觸摸事件
- 19. 防止元素在觸摸設備上被拖動
- 20. UIGestureRecognizer塊子視圖處理觸摸事件
- 21. 跨多個滾動視圖處理觸摸事件
- 22. 如何處理觸摸事件子視圖
- 23. 在主幹視圖中處理觸摸事件
- 24. 處理觸摸的函數
- 25. UITableView over UICollectionView觸摸處理
- 26. 在UITableViewController中處理觸摸
- 27. iPhone:處理觸摸透明
- 28. UIView不處理觸摸
- 29. 防止同時觸摸多個按鈕
- 30. 防止第二次觸摸生效
這不會阻止單元格中發生的所有事件冒泡嗎? – 2009-10-22 18:35:21
是的,雖然你應該能夠分析事件的觸摸更高級的處理,在我的情況下,這不是一個問題。 – 2009-10-22 19:02:43