Objective c uitextview应更改textinrange在所有方法中的工作

Objective c uitextview应更改textinrange在所有方法中的工作,objective-c,nsstring,uitextview,nsrange,nscharacterset,Objective C,Nsstring,Uitextview,Nsrange,Nscharacterset,我已经在-(BOOL)textView:(UITextView*)textView shouldChangeTextInRange:(nsrrange)range replacementText:(NSString*)string中输入了所有3个方法 但是,下面的三个方法只能工作其中的一个,我想知道应该如何编写代码使所有三个方法都以这种方式工作 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)ran

我已经在
-(BOOL)textView:(UITextView*)textView shouldChangeTextInRange:(nsrrange)range replacementText:(NSString*)string中输入了所有3个方法

但是,下面的三个方法只能工作其中的一个,我想知道应该如何编写代码使所有三个方法都以这种方式工作

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)string{

//restrict user to type 70 characters
int limit = 69; 
return !([inputTextSection.text length]>limit && [string length] > range.length);

//restrict inputing uppercase to lowercase
NSRange uppercaseCharRange;
uppercaseCharRange = [string rangeOfCharacterFromSet:[NSCharacterSet uppercaseLetterCharacterSet]];

if (uppercaseCharRange.location != NSNotFound) {

    inputTextSection.text = [inputTextSection.text stringByReplacingCharactersInRange:range
                                                                           withString:[string lowercaseString]];

    return NO;
}

return YES;


// restrict user to input other characters
NSCharacterSet *unacceptedInput = nil;


if (textView == inputTextSection) {

    if ([[inputTextSection.text componentsSeparatedByString:@"@"] count] > 1) {
        unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@".-"]] invertedSet];

    } else {
        unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@"\n .,;:<>[]!$%&'*+-/=?^_{}()~@"]] invertedSet]; //if nextline needed, insert "\n"
    }
}
else {
    unacceptedInput = [[NSCharacterSet illegalCharacterSet] invertedSet];
}
// If there are any characters that I do not want in the text field, return NO.
return ([[string componentsSeparatedByCharactersInSet:unacceptedInput] count] <= 1);}
-(BOOL)textView:(UITextView*)textView应更改textinrange:(NSRange)范围替换text:(NSString*)字符串{
//限制用户键入70个字符
整数极限=69;
返回!([inputTextSection.text length]>limit&&[string length]>range.length);
//限制输入大小写
NSRange uppercaseCharRange;
uppercaseCharRange=[CharacterFromSet的字符串范围:[NSCharacterSet uppercaseLetterCharacterSet]];
if(uppercaseCharRange.location!=NSNotFound){
inputTextSection.text=[inputTextSection.text StringByReplacingCharactersRange:范围
withString:[字符串小写字符串]];
返回否;
}
返回YES;
//限制用户输入其他字符
NSCharacterSet*不可接受输入=nil;
if(textView==inputExtSection){
如果([[inputTextSection.text Components由字符串分隔:@“@”]count]>1){
unacceptedInput=[[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@.-“]]invertedSet];
}否则{
unacceptedInput=[[NSCharacterSet characterSetWithCharactersInString:[字母数字字符串通过追加字符串:@“\n.,;:[]!$%&'*+-/=?^{}()~@“]]逆变器集];//如果需要下一行,请插入“\n”
}
}
否则{
unacceptedInput=[[NSCharacterSet-illegalCharacterSet]invertedSet];
}
//如果文本字段中有我不需要的字符,请返回NO。

return([[string componentsSeparatedByCharactersInSet:unceptedInput]count]我通过以下方法修复了它:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)string{

if (range.location>=70){
    return  NO;
}
else
{
    NSCharacterSet *unacceptedInput = nil;

    if (textView == inputTextSection || range.location>=70)  {

        NSRange uppercaseCharRange;
        uppercaseCharRange = [string rangeOfCharacterFromSet:[NSCharacterSet uppercaseLetterCharacterSet]];

        if (uppercaseCharRange.location != NSNotFound) {

            inputTextSection.text = [inputTextSection.text stringByReplacingCharactersInRange:range
                                                                                   withString:[string lowercaseString]];

            return NO;
        }


        if ([[inputTextSection.text componentsSeparatedByString:@"@"] count] > 1) {
            unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@".-"]] invertedSet];

        } else {
            unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@"\n .,;:<>[]!$%&'*+-/=?^_{}()~@"]] invertedSet]; 
        }
    }
    else {
        unacceptedInput = [[NSCharacterSet illegalCharacterSet] invertedSet];
    }

    return ([[string componentsSeparatedByCharactersInSet:unacceptedInput] count] <= 1);

    return YES; 
    } 
}
-(BOOL)textView:(UITextView*)textView应更改textinrange:(NSRange)范围替换text:(NSString*)字符串{
如果(范围位置>=70){
返回否;
}
其他的
{
NSCharacterSet*不可接受输入=nil;
if(textView==inputExtSection | | range.location>=70){
NSRange uppercaseCharRange;
uppercaseCharRange=[CharacterFromSet的字符串范围:[NSCharacterSet uppercaseLetterCharacterSet]];
if(uppercaseCharRange.location!=NSNotFound){
inputTextSection.text=[inputTextSection.text StringByReplacingCharactersRange:范围
withString:[字符串小写字符串]];
返回否;
}
如果([[inputTextSection.text Components由字符串分隔:@“@”]count]>1){
unacceptedInput=[[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@.-“]]invertedSet];
}否则{
unacceptedInput=[[NSCharacterSet characterSetWithCharactersInString:[字母数字字符串通过追加字符串:@“\n.,;:[]!$%&'*+-/=?^{}()~@]]逆变器集];
}
}
否则{
unacceptedInput=[[NSCharacterSet-illegalCharacterSet]invertedSet];
}

返回([[string componentsSeparatedByCharactersInSet:unceptedInput]计数]这可能只是我,但我无法理解这些问题。你在说哪三种方法,因为我只看到一种方法有三个参数。另外,你从该方法返回,然后有代码,甚至在它之后都不会被调用。对不起,我的意思是我无法计算出这三个参数。如何编写代码才能让他们三个都能工作?非常感谢