2016-05-31 13 views
9

touchesBegan、touchesEndedなどを使用してタッチを検出できることがわかっています。 これらはすべて機能します。唯一のことは、テキストフィールドのようなビューの上にあるものではなく、ビュー自体のタッチを検出することだけです。画面上の任意の場所で敏感なタッチを検出する

私の目標は、ある一定の時間が経過してからタイムアウトを作成することです。画面がタッチされた場合、タイムアウトはリセットされます。これは、誰かがアプリを使用していることを意味します。ラベル、ボタン、テキストビューなどのコントロールをタップしない限り、これまでのところ動作します。

任意のコントロールがタップされたときにタイムアウトをリセットすることもできますが、それはもっと多くのケース(異なるビューコントローラー上の異なるタイプのコントロール)を必要とします。

私は探していて、すべてのスクリーンタップの検出方法です。何か案は?

答えて

14

あなたのAppDelegateにこれを追加することができます。

+0

AppDelegateをUIGestureRecognizerDelegateプロトコルに準拠させるにはどうすればよいですか? – circuitry

+1

AppDelgateクラス宣言に次のように入力してください: class AppDelegate:UIResponder、UIApplicationDelegate、UIGestureRecognizerDelegate – Nati

0

UITapGestureRecognizerをドラッグアンドドロップすると、全体のビューが選択されていることを確認してください。ビューコントローラの最上部に追加され、Actionが作成されます。

ボタンが押されていないことを確認するには、非アクティブ期間が終了したら、別のビュー(透明またはわずかに暗くすることができます)を追加し、UITapGestureRecognizerを接続します。タップしたら、追加したビューを放してアクティビティを再開します。

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プロトコルに準拠します:

関連する問題