i'm trying to write a little concept app which reads the character stream as the user types in a UITextVie开发者_JAVA百科w, and when a certain word is entered it is replaced (sort of like auto-correction).
i looked into using -
(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
but so far i had no luck. can anyone give me a hint.
greatly appreciated!
david
That is the correct method. Is its object set as the delegate of the UITextView?
UPDATES:
-fixed above to say "UITextView" (I had "UITextField" previously)
-added code example below:  
This method implementation goes in the delegate object of the UITextView (e.g. its view controller or app delegate):
// replace "hi" with "hello"
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    // create final version of textView after the current text has been inserted
    NSMutableString *updatedText = [[NSMutableString alloc] initWithString:textView.text];
    [updatedText insertString:text atIndex:range.location];
    NSRange replaceRange = range, endRange = range;
    if (text.length > 1) {
        // handle paste
        replaceRange.length = text.length;
    } else {
        // handle normal typing
        replaceRange.length = 2;  // length of "hi" is two characters
        replaceRange.location -= 1; // look back one characters (length of "hi" minus one)
    }
    // replace "hi" with "hello" for the inserted range
    int replaceCount = [updatedText replaceOccurrencesOfString:@"hi" withString:@"hello" options:NSCaseInsensitiveSearch range:replaceRange];
    if (replaceCount > 0) {
        // update the textView's text
        textView.text = updatedText;
        // leave cursor at end of inserted text
        endRange.location += text.length + replaceCount * 3; // length diff of "hello" and "hi" is 3 characters
        textView.selectedRange = endRange; 
        [updatedText release];
        // let the textView know that it should ingore the inserted text
        return NO;
    }
    [updatedText release];
    // let the textView know that it should handle the inserted text
    return YES;
}
 
         
                                         
                                         
                                         
                                        ![Interactive visualization of a graph in python [closed]](https://www.devze.com/res/2023/04-10/09/92d32fe8c0d22fb96bd6f6e8b7d1f457.gif) 
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论