我知道你可以使用touchesBegan,touchesEnded等来检测触摸。 这一切都有效。唯一的问题是他们只检测视图本身的触摸,而不是像文本字段那样检测视图顶部的任何内容。
我的目标是在一段时间不活动后创建超时。如果触摸屏幕,将重置超时,这意味着某人仍在使用该应用程序。它可以工作到目前为止,只要他们不点击任何控件(如标签,按钮,textview等)。
我也可以在点击任何控件时重置超时,但这需要更多的情况(不同视图控制器上的不同类型的控件)。
我正在寻找并结束所有屏幕点击检测方法。有什么想法吗?
答案 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
连接到它。点击后,释放添加的视图并恢复活动。