如何限制UITextView iOS中的字符

如何限制UITextView iOS中的字符,ios,objective-c,nsstring,uitextview,nsinteger,Ios,Objective C,Nsstring,Uitextview,Nsinteger,我有一个UITextView,我想限制用户可以输入的字符数。我还试图显示一个警告,如果文本字段是空的,但没有运气 textview.h @property (nonatomic,strong) IBOutlet UITextView *textField; @property (nonatomic, retain) NSString *userText; textview.m - (IBAction)next:(id)sender { self.userText = self.t

我有一个UITextView,我想限制用户可以输入的字符数。我还试图显示一个警告,如果文本字段是空的,但没有运气

textview.h

@property (nonatomic,strong) IBOutlet UITextView *textField;
@property (nonatomic, retain) NSString *userText;

textview.m

- (IBAction)next:(id)sender {

    self.userText = self.textField.text;

    if ([self.textField.text length] == 0) {
            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error!"
                                                                message:@"Enter some text"
                                                               delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alertView show];
        }
}
这里是文本限制方法,它似乎不起作用

- (BOOL)textView:(UITextView *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

    if(range.length + range.location > textField.text.length)
    {
        return NO;

    } else {

    NSUInteger newLength = [textField.text length] + [string length] - range.length;
    return newLength <= 70;
    return (textField.text.length <= 70);
}
}
-(BOOL)textView:(UITextView*)textField应更改字符范围:(NSRange)范围替换字符串:(NSString*)字符串{
if(range.length+range.location>textField.text.length)
{
返回否;
}否则{
NSUInteger newLength=[textField.text length]+[string length]-range.length;
return newLength试试这个

 - (BOOL)isAcceptableTextLength:(NSUInteger)length {
    return length <= 70;
}

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)string {
    return [self isAcceptableTextLength:textField.text.length + string.length - range.length];
}

-(IBAction)checkIfCorrectLength:(id)sender{
    if (![self isAcceptableTextLength:self.textField.text.length]) {
        // do something to make text shorter
    }
}
-(BOOL)isAcceptableTextLength:(nsInteger)长度{
返回长度1)像这样在viewcontroller中添加UITextViewDelegate

@interface ViewController : UIViewController <UITextViewDelegate>
@界面ViewController:UIViewController
每次用户在键盘上键入字符时,就在字符显示之前,将调用以下方法。这是一个方便的位置,用于测试用户正在键入的字符,并禁止您要限制的特定字符

textView:ShouldChangeCharactersRange:replacementString

2) 然后编写以下代码。 你可以用你想要的数字代替140

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    return textView.text.length + (text.length - range.length) <= 140;
}
-(BOOL)textView:(UITextView*)textView应更改textinrange:(nsrrange)范围替换text:(NSString*)文本
{
返回textView.text.length+(text.length-range.length)Bool{

返回textView.text.characters.count+(text.characters.count-range.length)您可以使用下面的代码限制textView字符。在第一种方法中,您可以为textfield设置限制长度,或者如果您过去的文本超过了限制文本,它将创建该字符串的子字符串以固定textView的长度

#pragma mark - Textview Delegate
 -(void)textViewDidChange:(UITextView *)textView
 {   
    NSString *temp = textView.text;
   titleLength = textView.text.length;
   if (titleLength > RESTRICTED_LENGHT ) 
    {
    textView.text = [temp substringToIndex:RESTRICTED_LENGHT];
    }
 }
或者,如果文本视图文本长度大于限制长度,则可以使用此委托方法并返回No

 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
     if([text length] == 0)
      {
        if([textView.text length] != 0)
        {
          return YES;
        }
     }
   else if([[textView text] length] > 139)
    {
       return NO;
    }
   return YES;
}

您好,谢谢您的回答,我对ios开发非常陌生,如有任何进一步的帮助,将不胜感激
 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
     if([text length] == 0)
      {
        if([textView.text length] != 0)
        {
          return YES;
        }
     }
   else if([[textView text] length] > 139)
    {
       return NO;
    }
   return YES;
}