Swift检测屏幕上任何位置的触摸

LuK*_*eth 13 touch ios swift

我知道你可以使用touchesBegan,touchesEnded等来检测触摸.这些都可以.唯一的问题是他们只检测视图本身的触摸,而不是像文本字段那样检测视图顶部的任何内容.

我的目标是在一段时间不活动后创建超时.如果触摸屏幕,将重置超时,这意味着某人仍在使用该应用程序.它可以工作到目前为止,只要他们不点击任何控件(如标签,按钮,textview等).

我也可以在点击任何控件时重置超时,但这需要更多的情况(不同视图控制器上的不同类型的控件).

我正在寻找和结束所有屏幕点击检测方法.有任何想法吗?

Nat*_*ati 19

您可以将其添加到AppDelegate:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        let tapGesture = UITapGestureRecognizer(target: self, action: nil)
        tapGesture.delegate = self
        window?.addGestureRecognizer(tapGesture)

        return true
}

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
        // User tapped on screen, do whatever you want to do here.

        return false
}
Run Code Online (Sandbox Code Playgroud)

并且还使您的AppDelegate符合UIGestureRecognizerDelegate协议.