我一直在寻找解决方案并找到了以下代码。但不幸的是,我不知道如何使用它。
- (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: ?? ];
}
我为shouldChangeTextInRange
和replacementText
传递了什么?
或者我完全错了?
答案 0 :(得分:11)
从textView:shouldChangeTextInRange:replacementText:
拨打checkIfCorrectLength:
没有意义。如果要从多种方法测试长度,请将测试分解为自己的方法:
- (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
}
}
答案 1 :(得分:2)
您好我在这里找到并修改了代码。所以对于xamarin用户。尝试以下方法:
textView.ShouldChangeText += delegate
{
if(textView.Text.Length > 159) // limit to one sms length
{
return false;
}
return true;
}
答案 2 :(得分:1)
您不会自己调用此方法,文本视图会在要更改其文本时调用它。只需设置文本视图的delegate
属性(例如,设置到视图控制器)并在那里实现该方法。
答案 3 :(得分:0)
如果当前对象是文本视图的委托,那么您可以使用以下代码段:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
return weightTextView.text.length + text.length - range.length < 7;
}
这对我有用。
答案 4 :(得分: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;
}