UITextViewでユーザー入力文字を検出する方法は?
例:(UITextViewではUITextFieldではありません)
ユーザーが文字「a」を入力すると、イベントがトリガーされます。ユーザーが「doit」と入力すると、別のイベントがトリガーされます。または「http://www.stackoverflow.com」と入力すると、イベントがトリガーされます。
ありがとう
このデリゲートメソッド内で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];
}
}
このデリゲートは、ユーザーがキーを押すたびに呼び出されます
これを試して :-
- (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
}
作業中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....
}