猿问

具有UITapGestureRecognizer的视图内的UIButton

我有一个观点UITapGestureRecognizer。因此,当我点击视图时,该视图上方会出现另一个视图。此新视图具有三个按钮。现在,当我按下这些按钮之一时,我没有得到按钮动作,只有击打手势动作。因此,我无法再使用这些按钮。我该怎么做才能使事件通过这些按钮?奇怪的是按钮仍然突出显示。

收到UITapGestureRecognizer的提示后,我不能只删除它。因为有了它,新视图也可以被删除。意味着我想要像全屏视频控件那样的行为


哔哔one
浏览 768回答 3
3回答

守着星空守着你

您可以将控制器或视图(以创建手势识别器的任何视图)设置为的委托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}

宝慕林4294392

作为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}基本上,这使所有用户输入类型的控件(例如按钮,滑块等)都能正常工作
随时随地看视频慕课网APP
我要回答