[解決済み] iPhone 最後に画面をタッチしてからの非アクティブ時間/アイドル時間の検出
2022-04-27 13:39:03
質問
一定時間ユーザーが画面に触れなかった場合、特定のアクションを取るような機能を実装した方はいらっしゃいますか?最適な方法を考えているのですが。
UIApplicationには、こんなややこしいメソッドがあるんです。
[UIApplication sharedApplication].idleTimerDisabled;
その代わり、こんな感じだといいですね。
NSTimeInterval timeElapsed = [UIApplication sharedApplication].idleTimeElapsed;
そして、タイマーを設定してこの値を定期的にチェックし、ある閾値を超えたら何らかのアクションを起こすことができるのです。
私が求めているものが説明できていればいいのですが。この問題に取り組まれた方、またはどのように行うかについて何かお考えがありますか?ありがとうございます。
解決方法は?
ここに私が探していた答えがあります。
アプリケーションデリゲートをUIApplicationのサブクラスとする。実装ファイルでは、sendEvent: メソッドを以下のようにオーバーライドします。
- (void)sendEvent:(UIEvent *)event {
[super sendEvent:event];
// Only want to reset the timer on a Began touch or an Ended touch, to reduce the number of timer resets.
NSSet *allTouches = [event allTouches];
if ([allTouches count] > 0) {
// allTouches count only ever seems to be 1, so anyObject works here.
UITouchPhase phase = ((UITouch *)[allTouches anyObject]).phase;
if (phase == UITouchPhaseBegan || phase == UITouchPhaseEnded)
[self resetIdleTimer];
}
}
- (void)resetIdleTimer {
if (idleTimer) {
[idleTimer invalidate];
[idleTimer release];
}
idleTimer = [[NSTimer scheduledTimerWithTimeInterval:maxIdleTime target:self selector:@selector(idleTimerExceeded) userInfo:nil repeats:NO] retain];
}
- (void)idleTimerExceeded {
NSLog(@"idle time exceeded");
}
ここで、maxIdleTimeとidleTimerはインスタンス変数です。
これを動作させるには、UIApplicationMainにデリゲートクラス(この例ではAppDelegate)を主クラスとして使用するようにmain.mを修正する必要もあります。
int retVal = UIApplicationMain(argc, argv, @"AppDelegate", @"AppDelegate");
関連
-
[解決済み] Xcode 6.3 - 現在の iOS Development 証明書または保留中の証明書要求がすでにあります。
-
[解決済み] performSelectorのセレクタが不明なため、リークが発生する可能性があります。
-
[解決済み] 文字列の長さを取得する
-
[解決済み] SwiftでStringを配列に分割する?
-
[解決済み] iOS 8 UITableViewのセパレータインセット0が機能しない件
-
[解決済み] Unwind segueは何に使うのか、どう使うのか?
-
[解決済み] iOSシミュレータでスクリーンショットを撮る
-
[解決済み] UIViewの左上と右上だけにcornerRadiusを設定する方法は?
-
[解決済み] UITextFieldの最大文字数を設定します。
-
[解決済み] Swiftで配列に要素を追加する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
iOS classic error Undefined symbols for architecture XXX:
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] performSelectorのセレクタが不明なため、リークが発生する可能性があります。
-
[解決済み] App Storeのアプリと連動させる方法
-
[解決済み] iOS 13 のフルスクリーンでモーダルを表示する
-
[解決済み] アプリのプレビュー用にiOSシミュレータのビデオをキャプチャー
-
[解決済み] Swift で HTTP リクエストを行うにはどうしたらいいですか?
-
[解決済み] Swiftのプロトコルでオプションのメソッドを定義するには?
-
[解決済み] iOS 11、Apple TV 4Kなどを搭載したXcode 9でワイヤレスデバッグを行う方法とは?
-
[解決済み] ぼかしの入ったオーバーレイビューの作成