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

时间:2016-05-31 20:24:25

标签: ios swift touch

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

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

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

我正在寻找并结束所有屏幕点击检测方法。有什么想法吗?

2 个答案:

答案 0 :(得分:18)

您可以将其添加到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
}

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

答案 1 :(得分:0)

拖放UITapGestureRecognizer,确保选中整个视图。它将添加到视图控制器的顶行,然后为其创建Action

如果您想确保没有按下任何按钮,一旦完成不活动时间,请在其上添加另一个视图(可以是透明的或稍微暗一点)并将UITapGestureRecognizer连接到它。点击后,释放添加的视图并恢复活动。