2010-01-06 101 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 
     } 

    }