我有一个ViewController定义touchesMoved()来增加一个计数器,因为用户在屏幕上拖动手指:
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
numMoved += 1
print("Moved: \(numMoved)")
}
当用户转到另一个没有定义touchesMoved()的视图控制器时,我希望不会发生任何事情。 (新的视图控制器被定义为类OtherViewController,它直接从UIViewController继承,因此不会获得我为第一个视图控制器定义的touchesMoved()重写。)
然而,在点击一个将我带到另一个视图控制器的按钮后,我仍然看到打印的消息,这意味着即使我不再在跟踪拖动的原始视图控制器上,仍会调用touchesMoved()。
我是否遗漏了一些简单的事情,以确保对touchesMoved()的覆盖仅影响它在其中定义的ViewController?
感谢您的任何见解。
答案 0 :(得分:0)
不是在视图控制器中定义touchesMoved
,而是在视图中定义它。视图控制器的主视图可以。 (您将需要子类化UIView并使视图控制器的主视图成为此子类的实例。)
它将具有相同的效果,但现在您不在视图控制器层次结构中,并且您不会从其他视图控制器的视图中获取消息。
另一种选择:从touches:
中取出UITouch并查看其view
。如果这不是您的观点,请忽略此调用。