关于UITextView输入文字的限制

// 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;

}


posted @ 2010-09-21 14:16  真相天下  阅读(959)  评论(0)    收藏  举报