[英]iPhone - Detect touches on subview of UITableViewCell
我正在使用包含UIImageView子視圖的單元格填充UITableView。 我想檢測圖像視圖上的觸摸,所以我也添加了一個手勢識別器。 然而,沒有任何東西被稱為。 這是我的代碼:
UIImageView *delete = [[UIImageView alloc] initWithFrame:CGRectMake(1.0, 8.0, 33.0, 33.0)];
delete.image = [UIImage imageNamed:@"Delete.png"];
delete.userInteractionEnabled = YES;
delete.contentMode = UIViewContentModeCenter;
UIGestureRecognizer *gesture = [[UIGestureRecognizer alloc] initWithTarget:self action:@selector(deleteTapped)];
gesture.delegate = self;
[delete addGestureRecognizer:gesture];
[self.cellView addSubview:delete];
注意:我在技術上將圖像視圖添加到容器中,然后將其添加到單元格本身,因此[self.cellView addSubview:delete]
。 但我有相同的結果直接將圖像視圖添加到單元格。
根據類似帖子的這個答案,這是iOS 5.0中的一個已知錯誤; 解決方案是覆蓋委托方法以強制手勢識別器開始:
修復是在手勢識別器的委托中覆蓋-gestureRecognizerShouldBegin:並返回YES。 應該在iOS 5.x的未來版本中修復此錯誤。 只要您沒有使用新的UITableViewCell復制/粘貼API,這只是安全的。
我試過這個,但委托方法永遠不會被調用。 我已經設置了delegate
屬性(見上文)並實現了<UIGestureRecognizerDelegate>
,如下所示:
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
NSLog(@"gesture delegate method called");
return YES;
}
有沒有人知道為什么這仍然不起作用? 或者也許iOS 5.1中這個bug的狀態是什么?
嘗試為此委托方法返回YES - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;
如果要檢測點擊操作,請使用UITapGestureRecognizer
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.