UIKeyboard
で押されたバックスペースボタンを検出するにはどうすればよいですか?
ありがとう
[〜#〜] edit [〜#〜]:キーが押された値を返すキーボードデリゲートはありますか?
uITextFieldが空の場合、shouldChangeTextInRangeデリゲートメソッドは呼び出されません。UITextFieldをサブクラス化して、このメソッドをオーバーライドできます。
-(void)deleteBackward;
{
[super deleteBackward];
NSLog(@"BackSpace Detected");
}
uITextFieldはUITextInputプロトコルに準拠しているため、このメソッドが実装されており、このメソッドをオーバーライドして、バックスペースが押されたことを検出できます。次に、独自のプロトコル/デリゲートメソッドを記述して、バックスペースが検出された場合にカスタムテキストフィールドデリゲートに警告することができます。
まず、UIViewController
を参照するUITextField
は、UITextFieldDelegate
protocol
に準拠する必要があります。次に、クラスをdelegate
としてUITextField
に設定します(例:[myTextField setDelegate:self]
)。次に、クラスに次を追加します。 ""の文字列がreplacementString
として送信されると、それがバックスペースであることがわかります。
(BOOL)textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
{
if ([string isEqualToString:@""]) {
NSLog(@"Backspace");
}
return YES;
}
一時的にtextFieldDidBeginEditing
にゼロスペース文字を挿入しています
textField.text = @"\u200B";
バックスペースでは、その文字が削除されますが、グラフィカルには同じです。
それはハックです、それは機能します、しかしそれはプレースホルダーテキストを隠します...良くありません...