2010-01-06 88 views
22

我有一个UITextView,用户可以在textView中写入最多160个字符。 我如何解决UITextView的最大文本长度?如何修复UITextView的文本长度?

+1

这是不是重复....用户需要一种方法来确定一个'UITextView'的长度不是'的UITextField ' – 2013-01-15 00:42:02

回答

15

更换

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 

这是回答here

0

你可以看到类似的问题here。它已得到了答案

+0

这是一个用于UITextField .. – Zaraki 2012-03-30 08:45:02

58

这个代码块还与复制/粘贴,而且还与形势时科佩斯试图粘贴会使文本视图超出限制的字符数。在这种情况下,只有字符串的第一个字符被粘贴。

#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; 
    } 
} 
+0

卓越的解决方案 – kevinlawler 2011-05-26 20:37:31

+0

唯一的问题(除非它只是我的实现)是如何得到一个柜台来处理这个问题。 – 2012-08-11 04:39:23

+2

'counter'是什么意思?在文本视图中显示字符数量?如果是的话,你可以在textView:textDidChange:方法中更新计数器(它在我的项目中工作)。 – manicaesar 2012-08-14 06:23:56

12

这个答案迟到了; 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; 
} 
+0

我更喜欢这种方法,因为它粘贴超过MAX_LENGTH的文字时也会限制字符。请注意,用'文本'替换'replacementText'以避免错误。 – 2015-03-12 04:21:37

+0

这是完美的,不会崩溃 – NSGodMode 2015-07-29 14:34:47

0

斯威夫特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 
     } 

    }