2013-12-11 63 views
1

我想限制用戶在UITextView中輸入最多50個字。我嘗試了Pengune從question1的解決方案。這適用於我,除了用戶可以在最後一個字中輸入無限制的字符。限制用戶在UITextView中輸入最多50個字iOS

所以我想用正則表達式。我在question2中使用由 VonC給出的正則表達式。但是,這並不讓我輸入特殊符號,如「@在文本視圖。

在我的應用程序,用戶可以從網頁,票據,電子郵件等

在UITextView中輸入任何內容或只是複製粘貼

誰能知道這方面的任何替代的解決方案?

在此先感謝。

+0

你說問題1的答案適合你「除了用戶可以在最後一個詞中輸入無限制的字符」。那麼如果你只設置了一個字的限制,任何字都可以是任意長度的。您需要設置字數限制和字長限制。那是你要的嗎 ? –

回答

3

此代碼應爲你工作。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
    { 
     return textView.text.length + (text.length - range.length) <= 50; 
    } 
+1

單詞,而不是字符 –

0

做的suggeste d在「question2」中,但在括號內添加@以便您可以輸入。如果有任何東西將其視爲特殊字符,可能需要將其轉義。

0

您使用[NSCharacterSet whitespaceCharacterSet]來計算單詞。

- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{ 
static const NSUInteger MAX_NUMBER_OF_LINES_ALLOWED = 3; 

NSMutableString *t = [NSMutableString stringWithString: self.textView.text]; 
[t replaceCharactersInRange: range withString: text]; 

NSUInteger numberOfLines = 0; 
for (NSUInteger i = 0; i < t.length; i++) { 
    if ([[NSCharacterSet whitespaceCharacterSet] characterIsMember: [t characterAtIndex: i]]) { 
     numberOfWord++; 
    } 
} 

return (numberOfWord < 50); 
} 

方法textViewDidChangeSelection:當選擇文本的部分或該選擇被改變,例如複製或粘貼的文字部分時作爲被調用。

+0

您應該仔細閱讀問題。不要導致與其他問題的正確答案混淆。 – Mani