我希望有人能夠幫助我解決目前正在做我的頭的問題!在UIScrollView裏面檢測UITableViewCell上的滑動手勢
給出下面的視圖層次
我希望能夠檢測我的自定義的UITableViewCell滑動手勢。
我已經子類的的UIScrollView和有則hitTest:withEvent:方法方法來檢查我是否觸摸的tableview細胞(或其內容)或沒有,在這種情況下我設置以下滾動視圖屬性:
- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
UIView* result = [super hitTest:point withEvent:event];
if ([result.superview isKindOfClass:[UITableViewCell class]] || [result.superview tag] == SUBVIEW_TAG)
{
self.canCancelContentTouches = NO;
self.delaysContentTouches = YES;
} else {
self.canCancelContentTouches = YES;
self.delaysContentTouches = NO;
}
return result;
}
我還實施:
- (BOOL)touchesShouldCancelInContentView:(UIView *)view
{
if (view.tag == SUBVIEW_TAG || [[view superview] isKindOfClass:[UITableViewCell class]])
return NO;
return YES;
}
而且是回在NO的情況被觸摸的觀點是表視圖單元格。
這些方法都被調用,並按預期執行它們的操作,但我仍然無法阻止UIScrollView「揮霍」滑動手勢。
有趣的是,如果我在上面的兩個方法(包含SUBVIEW_TAG的那個)上包含了包含tableview和cell的UIView,它完美的工作,所以我猜測它必須與UITableView從UIScrollView繼承。
我的主要目標是能夠在單元上滑動以顯示更多細胞選項。在該視圖的任何其他位置的水平滑動將被滾動視圖捕獲,並按照其正常行爲水平移動內容。
任何想法將非常感激!
謝謝! 羅格
是否不足以將手勢識別器添加到UITableViewCell? – teriiehina
你有沒有解決這個問題? 如果是這樣,你介意分享你的解決方案嗎?你已經很好地詳細描述了問題 - 以類似的方式回答會非常棒! – iOSProgrammingIsFun
是的,這是一個很棒的解決方案 – Pasta