web-dev-qa-db-ja.com

UITextViewでユーザー入力文字を検出する方法

UITextViewでユーザー入力文字を検出する方法は?

例:(UITextViewではUITextFieldではありません)

ユーザーが文字「a」を入力すると、イベントがトリガーされます。ユーザーが「doit」と入力すると、別のイベントがトリガーされます。または「http://www.stackoverflow.com」と入力すると、イベントがトリガーされます。

ありがとう

15
Jason Zhao

このデリゲートメソッド内でTextViewコンテンツの変更を監視し、必要なアクションをトリガーできます。

- (void)textViewDidChange:(UITextView *)textView
{
    //Access the textView Content
    //From here you can get the last text entered by the user
    NSArray *stringsSeparatedBySpace = [textView.text componentsSeparatedByString:@" "];
    //then you can check whether its one of your userstrings and trigger the event
    NSString *lastString = [stringsSeparatedBySpace lastObject];
    if([lastString isEqualToString:@"http://www.stackoverflow.com"]) //add more conditions here
    {
          [self callActionMethod];
    }
}
26
Selvin

このデリゲートは、ユーザーがキーを押すたびに呼び出されます

これを試して :-

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    if([[textView.text stringByAppendingString:text] isEqualToString:@"a"])
    {
      //trigger 'a' operation
    }
    else if([[textView.text stringByAppendingString:text] isEqualToString:@"do it"])
    {
      //trigger do it operation
    }
    //Same conditions go on
}
11
iPrabu

作業中Swift 3ソリューション

まず、UITextViewDelegateを追加します

次に、デリゲートをviewDidLoadに設定し、self.testTextField.delegate = self

最後に、以下の例の関数textViewDidChangeを呼び出します。

func textViewDidChange(_ textView: UITextView) {
    // Do the logic you want to happen everytime the textView changes
    // if string is == "do it" etc....

}
8
Devbot10