UIGestureRecognizers 没有响应
Posted
技术标签:
【中文标题】UIGestureRecognizers 没有响应【英文标题】:UIGestureRecognizers not responding 【发布时间】:2012-12-12 02:17:50 【问题描述】:我有许多弹出视图保存为视图控制器的属性。它们仅在呈现时添加到视图中,并在隐藏时从视图中移除。一切正常,但我更改了代码以简化事情,但它不再工作了。
以下是我如何创建和添加手势识别器的示例:
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hidePopUpView:)];
[self.totalPowerPopUpView addGestureRecognizer:tapGestureRecognizer];
[self.co2PopUpView addGestureRecognizer:tapGestureRecognizer];
视图由按下 UIButton 触发的选择器呈现(通常在 if 语句中设置自定义视图属性的其他代码,但为简单起见,我将其删除):
- (void)showPopUpView:(UIButton*)sender
CGRect endFrame = CGRectMake(10, 10, 300, 400);
UIView *popUpView;
if (sender == self.totalPowerInfoButton)
[self.view addSubview:self.totalPowerPopUpView];
popUpView = self.totalPowerPopUpView;
if (sender == self.co2LevelInfoButton)
[self.view addSubview:self.co2PopUpView];
popUpView = self.co2PopUpView;
[UIView animateWithDuration:0.5
animations:^
popUpView.alpha = 1.0;
popUpView.frame = endFrame;
];
popUpView 存在,但是当我点击它们时,手势识别器选择器不会被调用。为什么不呢?
【问题讨论】:
【参考方案1】:这行得通吗:
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hidePopUpView:)];
[self.totalPowerPopUpView addGestureRecognizer:tapGestureRecognizer];
tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hidePopUpView:)];
[self.co2PopUpView addGestureRecognizer:tapGestureRecognizer];
【讨论】:
是的。我想我无法将手势识别器附加到多个视图? 没错。这是因为手势识别器具有作为属性附加的视图,而不是视图列表,因此只能附加一个。 @yuf 这在任何官方文档中都提到了吗? @skyline75489 你的意思是说手势识别器只能附加到一个视图的文档?这听起来是由单数 view property 暗示的。 @yuf 这是有道理的。感谢您的回答。【参考方案2】:仔细检查并确保将 UIGestureRecognizer 添加到的 UIView 将 UserInteractionEnabled
设置为 YES
。即
[self.imageView setUserInteractionEnabled:YES];
【讨论】:
以上是关于UIGestureRecognizers 没有响应的主要内容,如果未能解决你的问题,请参考以下文章
UIGestureRecognizers 干扰 UIToolbar?
如何使用 UIGestureRecognizers 相对于触摸位置在 UIScrollView 内旋转 UIImageView
您可以在不禁用其附加的 UIGestureRecognizers 的情况下禁用 UIButton 吗?
UIGestureRecognizers vs touchesBegan/touchesMoved/touchesEnded(准确度)