我必须限制用户可能在textview中输入的字符数。我将它限制为500个字符 以下是我的代码,
- (void)textViewDidChange:(UITextView *)textView{
NSInteger restrictedLength=500;
NSString *temp=textView.text;
NSLog(@"hekk %ld",[[textView text]length]);
if([[textView text] length] > restrictedLength){
textView.text=[temp substringToIndex:[temp length]-1];
}
}
问题在于,如果用户使用键盘编辑textview,则用户可能无法输入超过500个字符。但是如果用户复制粘贴文本,则用户可以输入超过500个字符。锄头可以解决这个问题吗?
答案 0 :(得分:3)
使用委托方法:
shouldChangeCharactersInRange
这是一个例子:
Error(8,163): PLS-00103: Encountered the symbol "01" when expecting one of the following: * & = - + ; < / > at in is mod remainder not rem <an exponent (**)> <> or != or ~= >= <= <> and or like like2 like4 likec between || member submultiset
答案 1 :(得分:2)
对于这种情况,最好使用 shouldChangeTextInRange 委托方法。
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
let textLenghtLimit = 100
let isChareactersLimitReached = (textView.text.characters.count - range.length + text.characters.count > textLenghtLimit)
return !isChareactersLimitReached
}
答案 2 :(得分:2)
试试这个。
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
int maxCharacters = 500;
NSString *newString = [textView.text stringByReplacingCharactersInRange:range withString:text];
if(newString.length > maxCharacters){
textView.text = [newString substringToIndex:maxCharacters];
return NO;
}
return YES;
}
答案 3 :(得分:2)
我在我的应用程序中使用了这个代码,工作正常
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if([text isEqualToString:@"\n"])
[textView resignFirstResponder];
else
{
if (textView.text.length + (text.length - range.length) == 400) {
[appDel displayAlert:@"Message limit is 400 character."];
}
return textView.text.length + (text.length - range.length) <= 400;
}
return YES;
}
答案 4 :(得分:1)
您可以使用shouldChangeCharactersInRange
Class的UITextView
委托方法。
每当UITextView
更改shouldChangeCharactersInRange
中的文字时,都会被调用。
因此,您可以按如下方式验证此方法中的要求:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
NSInteger restrictedLength=500;
NSString *temp=textView.text;
NSLog(@"hekk %ld",[[textView text]length]);
if([[textView text] length] > restrictedLength){
textView.text=[temp substringToIndex:restrictedLength];
return NO;
}
return YES;
}
答案 5 :(得分:1)
以下代码限制了100个字符的文本输入
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if(textField.text.length < 100)
{
return true;
}
return false;
}
答案 6 :(得分:1)
简单回答
g++ -std=c++11