[解決済み] iPhoneを振られたことを検知するには?
2022-03-16 02:32:15
質問
誰かがiPhoneを振ったときに反応したい。どのように振られたかは特に気にせず、一瞬勢いよく振られただけでいい。これを検出する方法をご存知の方はいらっしゃいますか?
解決方法は?
3.0では、新しいモーションイベントにフックすることで、より簡単な方法があります。
主なトリックは、シェイク・イベント・メッセージを受け取る最初のレスポンダーとなるUIView(UIViewControllerではない)を用意する必要があるということです。 以下は、シェイクイベントを取得するために任意のUIViewで使用することができるコードです。
@implementation ShakingView
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
if ( event.subtype == UIEventSubtypeMotionShake )
{
// Put in code here to handle shake
}
if ( [super respondsToSelector:@selector(motionEnded:withEvent:)] )
[super motionEnded:motion withEvent:event];
}
- (BOOL)canBecomeFirstResponder
{ return YES; }
@end
これらのメソッドのみを持つビューをサブクラス化する(そして、IBでベースタイプの代わりにこの新しいタイプを選択するか、ビューを割り当てるときにこれを使用する)だけで、どんなUIView(システムビューでさえ)も簡単にシェイクイベントを取得できるビューに変換することができます。
ビューコントローラーで、このビューをファーストレスポンダーに設定したい。
- (void) viewWillAppear:(BOOL)animated
{
[shakeView becomeFirstResponder];
[super viewWillAppear:animated];
}
- (void) viewWillDisappear:(BOOL)animated
{
[shakeView resignFirstResponder];
[super viewWillDisappear:animated];
}
ユーザーのアクションによってファーストレスポンダーになる他のビュー(検索バーやテキスト入力フィールドなど)がある場合、他のビューが辞任したときにシェイキングビューのファーストレスポンダーの状態を復元する必要があることを忘れないでください。
この方法は、applicationSupportsShakeToEditをNOに設定しても機能します。
関連
-
[解決済み] Xcodeエラー "Could not find Developer Disk Image" が発生する。
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] UITableViewの選択を無効にするにはどうすればよいですか?
-
[解決済み] 制約条件の変更をアニメーションで表現するには?
-
[解決済み] iOS7でスタイルUITableViewStyleGroupedを持つUITableViewの上部に余分なパディングがあるのはなぜですか?
-
[解決済み] iOSとWatchKitで画像のtintColorを変更する方法
-
[解決済み] UITextFieldのテキストインセット?
-
[解決済み] Swiftの配列を文字列に変換するには?
-
[解決済み] ぼかしの入ったオーバーレイビューの作成
-
[解決済み】デバイスがiPhone Xであるかどうかを検出します。
最新
-
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:
-
dyld: ライブラリがロードされていません。エラーの解決
-
[解決済み] Xcode 6.3 - 現在の iOS Development 証明書または保留中の証明書要求がすでにあります。
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] iOSのバージョンを確認する方法を教えてください。
-
[解決済み] Xcode 7のエラーです。"Missing iOS Distribution signing identity for ..." (iOS配布用署名IDがありません)
-
[解決済み] インポート vs #インポート - iOS 7
-
[解決済み] iOS 13でダークモードをオプトアウトすることは可能ですか?
-
[解決済み] UIImageのサイズを変更する最も簡単な方法?
-
[解決済み] ファイルはユニバーサル(3スライス)ですが、iOSの静的ライブラリのための(n)ARMv7-sスライスエラーが含まれていない、どうにかして回避するには?