[英]UIScrollView and detecting subview of tap gesture
我在自己的视图中添加了一个TapGestureRecognizer:
tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTap:)];
tap.numberOfTapsRequired = 1;
tap.numberOfTouchesRequired = 1;
[self.view addGestureRecognizer:tap];
[tap release];
该视图包含带有图像和标签的单个UIScrollView。 我想检测用户是否点击标签。
- (void)singleTap:(UIGestureRecognizer*)gestureRecognizer {
CGPoint pt = [gestureRecognizer locationInView:self.view];
UIView *v = [self.view hitTest:pt withEvent:nil];
if ([v isKindOfClass:[UILabel class]]) {
NSLog(@"label!");
return;
}
// else do other stuff if its not a label
但是我没看到标签! 在我的日志中。
我认为这是因为UILabel
默认情况下userInteractionEnabled
是NO
。 试着打开它。
编辑:这真的是一个猜测,但只是为了确认,Apple文档在[UIView hitTest:withEvent:]
状态:
此方法忽略隐藏的视图对象,禁用用户交互或alpha级别小于0.01的视图对象。
您的子视图(例如标签本身)实际上会隐藏用户与基础视图的交互。
为什么不在您的标签上添加手势识别器。 或者,您可能希望使用UIButton作为标签。
要么 -
如果您不想确定触摸了哪个标签,您可能希望在所有标签的顶部添加一个不可见的视图(一个空视图,既不是隐藏的视图也不是一个alpha = 0的视图),并将手势识别器添加到这些视图中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.