快速检测触摸屏上的任何地方
问题描述:
我知道你可以检测使用touchesBegan,touchesEnded等触摸 这些都工作。唯一的事情是他们只能检测视图本身的触摸,而不是像文本字段那样在视图顶部的任何东西。快速检测触摸屏上的任何地方
我的目标是在一段时间不活动后创建超时。如果屏幕被触摸,超时将被重置,这意味着有人仍在使用该应用程序。它到目前为止工作,只要他们不点击任何控件(如标签,按钮,文本视图等)。
我还可以在任何控件被点击时重置超时,但这需要更多的情况(不同视图控制器上的不同类型的控件)。
我正在寻找和最终全屏幕拍照检测方法。有任何想法吗?
答
您可以添加到您的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协议。
答
拖放UITapGestureRecognizer
,确保选择了整个视图。它将被添加到视图控制器的最上面一行,然后为它创建一个Action
。
如果您想要确保没有按下任何按钮,则在完成非活动期后,在其上添加另一个视图(可以是透明的或只是稍深一点),并将其连接到UITapGestureRecognizer
。点击后,释放添加的视图并恢复活动。
我如何使AppDelegate符合UIGestureRecognizerDelegate协议? – circuitry
只需在你的AppDelgate类声明中输入如下代码: class AppDelegate:UIResponder,UIApplicationDelegate,UIGestureRecognizerDelegate – Nati