当使用UITextView收集Objective-C中的用户输入时,如何限制用户尝试一次执行多个换行符?
所以,这没关系:
This is my text.
Here is some more text.
但这不会很好:
This is my text.
Here is some more text way down here.
答案 0 :(得分:1)
在ViewController.h中添加UITextViewDelegate
:
YourViewController : UIViewController <UITextViewDelegate>
并在ViewController.m中以这种方式实现方法textView:shouldChangeTextInRange:replacementText:
:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if ([text isEqualToString:@"\n"]) {
NSMutableString *futureString = [textView.text mutableCopy];
[futureString insertString:text atIndex:range.location];
NSRange rangeOflineBreaks = [futureString rangeOfString:@"\n\n\n"];
if (rangeOflineBreaks.location != NSNotFound) {
return NO;
}
}
return YES;
}
这将在每次用户想要向textView添加一些文本之前执行,并且如果它注意到他想要添加换行符并且在尝试添加它之后找到它,那么不会让他添加另一个换行符(这就是为什么futureString
名称)三重换行模式。在这种情况下,他不会让用户添加另一个换行符。
尝试一下,它应该工作:)
PS:不要忘记在viewDidLoad
(yourTextView.delegate = self
)