我有一个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);
}
}
答案 0 :(得分:10)
1)在你的viewcontroller中添加UITextViewDelegate,如下所示
@interface ViewController : UIViewController <UITextViewDelegate>
每次用户在键盘上键入字符时,就在显示字符之前,调用以下方法。这是一个方便的位置,用于测试用户正在键入的字符,并禁止您想要限制的特定字符。
的TextView:shouldChangeCharactersInRange:replacementString
2)然后编写以下代码。 而不是140你可以把你想要的任何数字。
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
return textView.text.length + (text.length - range.length) <= 140;
}
如需更多帮助,请查看UItextView
Swift 2.0解决方案
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
return textView.text.characters.count + (text.characters.count - range.length) <= textViewLimit
}
答案 1 :(得分:0)
Try this
- (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
}
}
答案 2 :(得分:0)
您可以使用下面的代码来限制第一种方法中的textview字符,您可以为textfield设置受限制的长度,或者如果您过去的文本超过限制文本,它将创建该字符串的子字符串以修复textview的长度。
-115
或者您可以使用此委托方法,如果文本视图文本长度大于您的限制长度,则返回No.。
#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];
}
}