如何使用 touchesBegan 和 touchesEnded?

Posted

技术标签:

【中文标题】如何使用 touchesBegan 和 touchesEnded?【英文标题】:how to use touchesBegan and touchesEnded? 【发布时间】:2017-01-28 12:23:31 【问题描述】:

我在 ViewController 上添加了以下代码

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 
    print("started")


override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) 
    print("ended")

但它根本不打印任何消息。

【问题讨论】:

尝试将它们放在视图而不是视图控制器上。 (我很惊讶地看到这些可以在 UIViewController 上被覆盖。) @dfd 我是 Swift 的初学者。你能告诉我如何将这些代码放在 View 上,而不是 ViewController 上。 【参考方案1】:

UIResponder 类是一个抽象接口,用于响应和 处理事件 Apple API Reference

UIWindow、UIViewController、UIView 是 UIResponder 的子类

如果你想使用touchesBegantouchesEnded,覆盖它

触摸事件跟随响应者链参考apple docs

发生一些触摸事件,您的 ViewController 的视图成为下一个响应者并成功命中测试 touchesBegan 在触摸开始时调用,touchesEnded 被调用触摸结束

【讨论】:

我确实覆盖了 UIViewController 上的上述代码。错了吗?

以上是关于如何使用 touchesBegan 和 touchesEnded?的主要内容,如果未能解决你的问题,请参考以下文章

你如何知道在 touchesBegan 中被触摸的对象是啥?

touchesBegan,如何获得所有的接触,而不仅仅是第一次或最后一次?

TouchesBegan 总是返回错误的 UIView

touchesBegan 在 PDFView 中没有触发

UIScrollView touchesBegan

在 `touchesBegan:withEvent:` 之后禁用所有 UIPanGestureRecognizer