【发布时间】:2014-07-23 15:46:02
【问题描述】:
我不清楚应该在哪里将 UIGestureRecognizer 代码添加到 UITableViewCell 的相应子视图中。我已经阅读了我能找到的所有相关问题。现在我的单元格和单元格的子视图在 cellForRowAtIndexPath 内生成。我试图在 cellForRowAtIndexPath 中添加手势:
UITapGestureRecognizer* tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[mySubview addGestureRecognizer:tapGesture];
tapGesture.cancelsTouchesInView = YES;
tapGesture.delegate = self;
但是,这并没有检测到任何东西。为了验证我的 UIGesture 识别器是否正常工作,我在 tableView 本身上使用了上面的代码,它确实按预期注册了触摸。此外,当 tableView 附加了上述手势时,也会按预期调用以下代码:
-(BOOL) gestureRecognizer:(UITapGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
NSLog(@"shouldRevceiveTouch");
return YES;
}
- (BOOL)gestureRecognizer:(UITapGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UITapGestureRecognizer *)otherGestureRecognizer
{
NSLog(@"simultaneously");
return YES;
}
我试图从 tableView 和 cellForRowAtIndexPath 内部删除 GestureRecognizer 我试图将 GestureRecognizer 附加到单元格本身,它的任何子视图,没有检测到任何其他内容。 (以上代码均未触发)
显然我错误地添加了 GestureRecognizer。在哪里/何时是添加 GestureRecognizer 的合适位置/时间?
谢谢。
【问题讨论】:
-
我认为如果 mySubview 不是 nil 并且它的 userInteractionEnabled 属性设置为 yes,您显示的代码应该可以工作。 mySubview 是什么类型的视图?
-
如果子视图是 UILabel 类型,请启用 userInteraction 属性为 true。
标签: ios objective-c uitableview