我有一个UITextView,用户可以在textView中写入最多160个字符。 我如何解决UITextView的最大文本长度?如何修复UITextView的文本长度?
回答
更换
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
与
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
这是回答here
这个代码块还与复制/粘贴,而且还与形势时科佩斯试图粘贴会使文本视图超出限制的字符数。在这种情况下,只有字符串的第一个字符被粘贴。
#define MAX_LENGTH 15 // Whatever your limit is
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
NSUInteger newLength = (textView.text.length - range.length) + text.length;
if(newLength <= MAX_LENGTH)
{
return YES;
} else {
NSUInteger emptySpace = MAX_LENGTH - (textView.text.length - range.length);
textView.text = [[[textView.text substringToIndex:range.location]
stringByAppendingString:[text substringToIndex:emptySpace]]
stringByAppendingString:[textView.text substringFromIndex:(range.location + range.length)]];
return NO;
}
}
卓越的解决方案 – kevinlawler 2011-05-26 20:37:31
唯一的问题(除非它只是我的实现)是如何得到一个柜台来处理这个问题。 – 2012-08-11 04:39:23
'counter'是什么意思?在文本视图中显示字符数量?如果是的话,你可以在textView:textDidChange:方法中更新计数器(它在我的项目中工作)。 – manicaesar 2012-08-14 06:23:56
这个答案迟到了; manicaesar的解决方案对我无效。下面是我执行同样的想法的:
#define MAX_LENGTH 140
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)replacementText
{
NSString *newText = [ textView.text stringByReplacingCharactersInRange: range withString: replacementText ];
if([newText length]<= MAX_LENGTH){
return YES;
}
// case where text length > MAX_LENGTH
textView.text = [ newText substringToIndex: MAX_LENGTH ];
return NO;
}
我更喜欢这种方法,因为它粘贴超过MAX_LENGTH的文字时也会限制字符。请注意,用'文本'替换'replacementText'以避免错误。 – 2015-03-12 04:21:37
这是完美的,不会崩溃 – NSGodMode 2015-07-29 14:34:47
斯威夫特3
fileprivate let maxLen = 5
extension MyViewController : UITextViewDelegate{
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
let newLen = (textView.text.characters.count - range.length) + text.characters.count
return newLen <= maxLen
}
}
这是不是重复....用户需要一种方法来确定一个'UITextView'的长度不是'的UITextField ' – 2013-01-15 00:42:02