ユーザーが入力中にキーボードのキーに触れている時間を検出しようとしているので、たとえば、特定のキーが十分に長く押されたときにダイアログがポップアップ表示されます。
touchesEnded
通常のビューでこれを検出することは、との間の時間を測定することで簡単touchesBegan
です。ただし、キーボードからイベントを受信しません。touchesEnded
キーボードからtouchesBegan
イベントを受信する方法について何かアイデアはありますか?
ユーザーが入力中にキーボードのキーに触れている時間を検出しようとしているので、たとえば、特定のキーが十分に長く押されたときにダイアログがポップアップ表示されます。
touchesEnded
通常のビューでこれを検出することは、との間の時間を測定することで簡単touchesBegan
です。ただし、キーボードからイベントを受信しません。touchesEnded
キーボードからtouchesBegan
イベントを受信する方法について何かアイデアはありますか?
システム提供のキーボードに必要なものを追加することはできません。ただし、独自のカスタムキーボードを実装することで、必要な方法を実現できます。このキーボードには、長いキー押下を処理するための任意の方法があります。カスタムキーボードの実装にアプローチする方法の一例として、前のこの前の質問を参照してください。
これを実装するときは、touchsEndedとtouchesBeginを調べて、長いタッチがいつ発生したかを特定するのではなく、iOSが提供するUILongPressGestureRecognizerを使用する必要があります。
システム自体に特定のキーを押したときに表示される追加のメニューがあり、オンスクリーンキーボード(Bluetoothキーボード)がない場合もあるため、これを行うことができるとは思いません(特にApp Storeアプリで)。 。
これらをリスナーに追加してTextFieldに追加します
// editing began:
[textField addTarget:self action:@selector(textFieldEditingDidBegin:) forControlEvents:UIControlEventEditingDidBegin];
// editing changed:
[textField addTarget:self action:@selector(editingChanged:)forControlEvents:UIControlEventEditingChanged];
// editing ended:
[textField addTarget:self action:@selector(editingDidEnd:) forControlEvents:UIControlEventEditingDidEnd];
キーボードの表示と非表示を認識する次の通知を使用することもできます。
// keyboard shows on screen:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow) name:UIKeyboardDidShowNotification object:nil];
// keyboard is hidden:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide) name:UIKeyboardDidHideNotification object:nil];