2016-03-30 10 views
-3

UITextViewのキーボードのバックスペースのクリックイベントで、どの文字が削除されたかを検出したい。キーボードのUItextViewとバックスペースのクリックイベント

誰かが解決策を知っていれば、助けてください。 ありがとうございます。

+0

は、私は解決策を探していますが、いずれも見つからなかったので、あなたが持っている場合は任意の助けてください..私は、私はちょうどキーボードでバックスペースで削除された文字を検出したい理解していなかった –

答えて

1

あなたは

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text; 

をプロトコルUITextViewDelegateメソッドを実装し、ちょうど範囲 これは、ログを持ってしてみてください内のテキストを取得する必要があります

- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { 


     NSLog(@"deleting this string: |%@|", [textView.text substringWithRange:range]); 


    return YES; 
} 
(それは交換が、新たな入力ではありません場合は空です)

PS

あなたのUITextViewの代理人としてあなたのクラスを設定することを忘れないでください

+0

申し訳ありません... 'Text'は新しい置換文字を返しません。文字は削除されません。 –

+0

大変申し訳ありません...私の回答を変更しました... – meronix

+0

あなたのお手伝いをしてくれた素晴らしい人でした。 –

-1

これはあなたが欲しいものです。このメソッドは、文字が削除されるたびに検出し、それをコンソールに出力します。

@interface ViewController()<UITextFieldDelegate> 
{ 
    UITextField *textField; 
    NSString *currentText; 
} 
@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    textField = [[UITextField alloc] initWithFrame:CGRectMake(20, 50, self.view.frame.size.width-40, 30)]; 
    [textField addTarget:self action:@selector(textChanged:) forControlEvents:UIControlEventEditingChanged]; 
    textField.delegate = self; 
    textField.borderStyle = UITextBorderStyleRoundedRect; 
    [self.view addSubview:textField]; 
} 

-(void)textChanged:(UITextField *)sender{ 

    if (!currentText) { 
     currentText = sender.text; 
    } 

    if (![currentText isEqualToString:sender.text]) { 

     //The text that is in the textField at the moment is shorter than it was the last time the textfield was editted... This shows that a backspace was pressed 
     if (currentText.length > sender.text.length) { 


      NSLog(@"Character: %@", [currentText substringFromIndex:sender.text.length]); 

     } 



    } 

    currentText = sender.text; 


} 


@end