我有一个iOS游戏,在加载屏幕期间,用户似乎已经缓冲了任何触摸,所以一旦完成加载(可能需要几秒钟),我就会得到触摸事件。
我有办法放弃所有接触吗?
答案 0 :(得分:0)
好吧,这是一个非常老的问题,但是对于任何绊脚石的人来说,可以仅采用以下两种方法之一
方法1。
DiscardTouchView.addGestureRecognizer(UITapGestureRecognizer())
基本上添加一个空手势。因此,在点击该视图时,什么也不会发生。
方法2。
在这种情况下,您不会在视图中添加空手势识别器。如果DiscardTouchView
是SomeParentView
的子视图,其中有一个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!)
}
}
将userInteractionEnabled
设置为false
实际上会将触摸事件从子视图传递到超级视图。它不会丢弃触摸事件。
将简单的userInteractionEnabled
的{{1}}设置为true
即可。