如何在UITextView中限制字符数?

6

我一直在寻找解决方案,发现了下面的代码。但不幸的是,我不知道如何使用它。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)string {
        NSUInteger newLength = [textField.text length] + [string length] - range.length;
        return (newLength > 25) ? NO : YES;
    }

为了测试目的,我设置了一个IBACTION

-(IBAction)checkIfCorrectLength:(id)sender{
    [self textView:myTextView shouldChangeTextInRange: ?? replacementText: ?? ];

}

我应该传递什么参数给shouldChangeTextInRangereplacementText?还是我完全误解了?

1
那是一种委托方法 - 阅读UITextView及其协议的文档。 - Till
5个回答

11

checkIfCorrectLength:调用textView:shouldChangeTextInRange:replacementText:没有意义。如果您想从多个方法中测试长度,请将测试提取到自己的方法中:

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

- (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
    }
}

3

你好,我在这里找到并修改了代码。因此,对于Xamarin用户,请尝试以下操作:

textView.ShouldChangeText += delegate
{
   if(textView.Text.Length > 159) // limit to one sms length
   {
      return false;
   }

   return true;
}

1

你不需要自己调用这个方法,文本视图会在它即将改变文本时自动调用它。只需设置文本视图的delegate属性(例如,设置为你的视图控制器),并在那里实现该方法。


0
如果当前对象是文本视图的代理,则可以使用以下代码片段:

如果当前对象是文本视图的代理,则可以使用以下代码片段:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    return weightTextView.text.length + text.length - range.length < 7;
}

这对我有用。


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

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接