为了账号安全,请及时绑定邮箱和手机立即绑定

具有UITapGestureRecognizer的视图内的UIButton

具有UITapGestureRecognizer的视图内的UIButton

哔哔one 2019-10-05 11:07:20
我有一个观点UITapGestureRecognizer。因此,当我点击视图时,该视图上方会出现另一个视图。此新视图具有三个按钮。现在,当我按下这些按钮之一时,我没有得到按钮动作,只有击打手势动作。因此,我无法再使用这些按钮。我该怎么做才能使事件通过这些按钮?奇怪的是按钮仍然突出显示。收到UITapGestureRecognizer的提示后,我不能只删除它。因为有了它,新视图也可以被删除。意味着我想要像全屏视频控件那样的行为。
查看完整描述

3 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

您可以将控制器或视图(以创建手势识别器的任何视图)设置为的委托UITapGestureRecognizer。然后在委托中您可以实现-gestureRecognizer:shouldReceiveTouch:。在您的实现中,您可以测试触摸是否属于您的新子视图,如果是,则指示手势识别器将其忽略。类似于以下内容:


- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

    // test if our control subview is on-screen

    if (self.controlSubview.superview != nil) {

        if ([touch.view isDescendantOfView:self.controlSubview]) {

            // we touched our control surface

            return NO; // ignore the touch

        }

    }

    return YES; // handle the touch

}


查看完整回答
反对 回复 2019-10-05
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

作为Casey对Kevin Ballard的回答的跟进:


- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

        if ([touch.view isKindOfClass:[UIControl class]]) {

            // we touched a button, slider, or other UIControl

            return NO; // ignore the touch

        }

    return YES; // handle the touch

}

基本上,这使所有用户输入类型的控件(例如按钮,滑块等)都能正常工作

查看完整回答
反对 回复 2019-10-05
  • 3 回答
  • 0 关注
  • 725 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信