ios - 可以丢弃触摸事件吗?

标签 ios

我有一个 iOS 游戏,在加载屏幕期间,用户的任何触摸似乎都被缓冲了,所以一旦加载完成(可能需要几秒钟),我就会得到触摸事件。

有没有办法让我放弃所有的触摸?

最佳答案

好的,这是一个非常古老的问题,但对于任何遇到此问题的人来说,都可以简单地遵循以下两种方法之一:

方法1。

DiscardTouchView.addGestureRecognizer(UITapGestureRecognizer())

基本上添加了一个空的手势。因此,在点击该 View 时,什么也没有发生。

方法2。

在这种情况下,您不会将空手势识别器添加到 View 中。万一DiscardTouchViewSomeParentView 的 subview 其中有一个 UIGestureRecognizer对象,您可以获得该对象和 ignore它。
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    guard let tappedView = touches.first?.view else { return }
    if(tappedView == DiscardTouchView) {
        guard let recognizer = touches.first?.gestureRecognizers?.first else { return }
        recognizer.ignore(touches.first!, for: event!)
    }
}

设置userInteractionEnabledfalse实际上将触摸事件从 subview 传递到父 View 。它不会丢弃触摸事件。

设置userInteractionEnabledtrue对于一个简单的UIView做同样的事情。

关于ios - 可以丢弃触摸事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9572762/

相关文章:

objective-c - UIResponder 链题

ios - 定义一个字节的方式有很多种

javascript - 为什么此代码在 iPad Pro 上不起作用? (JS)

iphone - iOS UISlider 自定义。从中心显示突出显示

ios - swift 3 : Defining var labels: [UILabel] fails

ios - Swift 通知多个横幅

ios - 使用 CAKeyframeAnimation 延迟 UIView 的动画开始?

ios - UISwipeGestureRecognizer for swift on xcode

ios - 无法在 TableView 上设置自定义长按手势识别器

iOS objective-C XCode : Logging Breakpoints and "magic" variables