から単語を削除し、私はUITextView内の文字列を持っています。しかし、私が望むのは、いずれかの単語が@
(例えば:@are)で始まり、その単語をタップしてバックスペースを押すと、単語全体(つまり、@are)が文字の代わりに削除されるはずです。プレフィックス '@'を持つ単語をタップすると(それは@areのように)強調表示され、backspaceを押すとその単語が削除される可能性はありますか?のiOSが思うUITextView
どうすればいいですか?
から単語を削除し、私はUITextView内の文字列を持っています。しかし、私が望むのは、いずれかの単語が@
(例えば:@are)で始まり、その単語をタップしてバックスペースを押すと、単語全体(つまり、@are)が文字の代わりに削除されるはずです。プレフィックス '@'を持つ単語をタップすると(それは@areのように)強調表示され、backspaceを押すとその単語が削除される可能性はありますか?のiOSが思うUITextView
どうすればいいですか?
[OK]を私はそれとワーキング:) UITextView
のdelegate
を設定
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if ([string isEqualToString:@""]) {
UITextRange* selectedRange = [textField selectedTextRange];
NSInteger cursorOffset = [textField offsetFromPosition:0 toPosition:selectedRange.start];
NSString* text = textField.text;
NSString* substring = [text substringToIndex:cursorOffset];
NSString* lastWord = [[substring componentsSeparatedByString:@" "] lastObject];
if ([lastWord hasPrefix:@"@"]) {
// Delete word
textField.text = [[self.textField text] stringByReplacingOccurrencesOfString:lastWord withString:@""];
return NO;
}
}
return YES;
}// return
私の回答を受け入れると助かりますので、同じ問題であれば他の人に有利になる –
あなたの答えを受け入れました。 –
のためのソリューションを持っています。次のようにデリゲートメソッドを実装します -
- (BOOL)textView:(UITextView *)textView
shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text{
if([text isEqualToString:@""]){//means user pressed backspace
NSArray *arrayOfWords = [textView.text componentsSeparatedByString:@" "];// Separate all the words separated by space
NSString *lastWord = [arrayOfWords lastObject];// Get the last word (as we are working with backspace)
if([lastWord hasPrefix:@"@"]){
textView.text = [textView.text stringByReplacingOccurrencesOfString:lastWord withString:@" "];//if last word starts with @, then replace it with space
}
}
return YES;
}
はこれを試してみてください。http://stackoverflow.com/q/28822467/2603230 – Arefly
質問が良い..です –
あなたは、デフォルトの選択のポップアップを使用するか、プログラム的にやっているのだろうか? –