Swift 中的所有视图控制器都看到了 touchesMoved?
touchesMoved seen by all view controllers in Swift?
我有一个 ViewController 定义了 touchesMoved() 以在用户将手指拖过屏幕时递增计数器:
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
numMoved += 1
print("Moved: \(numMoved)")
}
当用户转到另一个未定义 touchesMoved() 的视图控制器时,我希望不会发生任何事情。 (新的视图控制器被定义为 class OtherViewController,它直接继承自 UIViewController,因此没有得到我为第一个视图控制器定义的 touchesMoved() 覆盖.)
但是,在点击将我带到另一个视图控制器的按钮后,我仍然看到打印的消息,这意味着 touchesMoved() 仍在被调用,即使我不再在跟踪拖。
我是否遗漏了一些简单的东西来确保对 touchesMoved() 的覆盖仅影响它在其中定义的 ViewController?
感谢您的任何见解。
不是在视图控制器中定义 touchesMoved
,而是在 视图 中定义它。视图控制器的主视图就可以了。 (您需要继承 UIView 并将视图控制器的主视图作为该子类的实例。)
它会有同样的效果,但现在你不在视图控制器层次结构中,你不会从其他视图控制器的视图中获取消息。
另一种选择:从 touches:
中拉出一个 UITouch 并查看它的 view
。如果这不是您的看法,请忽略此电话。
我有一个 ViewController 定义了 touchesMoved() 以在用户将手指拖过屏幕时递增计数器:
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
numMoved += 1
print("Moved: \(numMoved)")
}
当用户转到另一个未定义 touchesMoved() 的视图控制器时,我希望不会发生任何事情。 (新的视图控制器被定义为 class OtherViewController,它直接继承自 UIViewController,因此没有得到我为第一个视图控制器定义的 touchesMoved() 覆盖.)
但是,在点击将我带到另一个视图控制器的按钮后,我仍然看到打印的消息,这意味着 touchesMoved() 仍在被调用,即使我不再在跟踪拖。
我是否遗漏了一些简单的东西来确保对 touchesMoved() 的覆盖仅影响它在其中定义的 ViewController?
感谢您的任何见解。
不是在视图控制器中定义 touchesMoved
,而是在 视图 中定义它。视图控制器的主视图就可以了。 (您需要继承 UIView 并将视图控制器的主视图作为该子类的实例。)
它会有同样的效果,但现在你不在视图控制器层次结构中,你不会从其他视图控制器的视图中获取消息。
另一种选择:从 touches:
中拉出一个 UITouch 并查看它的 view
。如果这不是您的看法,请忽略此电话。