如何确定用户是否在视图控制器上进行交互?

时间:2017-02-17 13:04:17

标签: ios view controller gestures interaction

我有一个视图控制器,我使用计时器关闭此视图控制器。我有一些按钮,但我需要当用户使用一些手势时,我需要重置该计时器。所以我必须处理特定视图控制器中的每个手势并在那里调用重置计时器功能。我知道有一种方法可以覆盖UIApplication方法(void)sendEvent:并发送一些广播通知。但我想在视图控制器上处理它。以某种方式捕获所有通知和调用方法。

非常感谢你。

3 个答案:

答案 0 :(得分:4)

UIViewController继承自UIResponder类。

因此,您可以选择从问题中实施所有UIResponder课程“触摸事件”。

来自Docs:

func touchesBegan(Set<UITouch>, with: UIEvent?) // Tells this object that one or more new touches occurred in a view or window.
func touchesMoved(Set<UITouch>, with: UIEvent?) // Tells the responder when one or more touches associated with an event changed.
func touchesEnded(Set<UITouch>, with: UIEvent?) // Tells the responder when one or more fingers are raised from a view or window.
func touchesCancelled(Set<UITouch>, with: UIEvent?) // Tells the responder when a system event (such as a system alert) cancels a touch sequence.

希望这有帮助。

答案 1 :(得分:0)

UIViewController有像

这样的方法
Entering interactive mode (type "help" for commands)
(pprof) top10
profile is empty

这会满足您的需求吗?

答案 2 :(得分:0)

有两种方法可以在视图上处理用户交互/操作。

点击手势:使用UITapGestureRecognizer
UITapGestureRecognizer是UIGestureRecognizer的具体子类,用于查找单个或多个抽头。对于要识别的手势,指定数量的手指必须按指定的次数点击视图。

func handleTap(sender: UITapGestureRecognizer) {
    if sender.state == .Ended {
        // handling code
    }
}


触摸:使用UITouch (由UIViewController从UIResponder继承)
UITouch对象表示屏幕上发生的触摸的位置,大小,移动和力。

func touchesBegan(Set<UITouch>, with: UIEvent?) // Tells this object that one or more new touches occurred in a view or window.
func touchesMoved(Set<UITouch>, with: UIEvent?) // Tells the responder when one or more touches associated with an event changed.
func touchesEnded(Set<UITouch>, with: UIEvent?) // Tells the responder when one or more fingers are raised from a view or window.
func touchesCancelled(Set<UITouch>, with: UIEvent?) // Tells the responder when a system event (such as a system alert) cancels a touch sequence.