ios中实现对UItextField,UITextView等输入框的字数限制

时间:2023-03-09 09:59:15
ios中实现对UItextField,UITextView等输入框的字数限制

本文转载至 http://blog.sina.com.cn/s/blog_9bf272cf01013lsd.html

2011-10-05 16:48 533人阅读 评论(0) 收藏 举报

1.     如何实现对UITextField ,UITextView等输入框的 字数限制

(1)首先,肯定要 让controller 实现 UITextFieldDelegate (针对UITextField)或者  UITextViewDelegate(针对UITextView)

然后,将 输入框的delegate属性设置为self.

(2) 然后,我们就可以用这两个delegate的函数来实现 我们对输入字数的限制了。

对于 UITextField 是函数

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

或者

对于UITextView 是函数

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

如果允许继续输入,那么返回YES,否则返回NO。

代码如下:

view plain

  1. //如果输入超过规定的字数100,就不再让输入
  2. - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
  3. {
  4. if (range.location>=100)
  5. {
  6. return  NO;
  7. }
  8. else
  9. {
  10. return YES;
  11. }
  12. }

2.  如何实现 对有输入限制的输入框的剩余字数的自动计算

比如上面的代码中,输入框的字数不能超过100,如何实时的计算出当前可以输入多少个字符呢?

UITextField 没有找到合适的函数,也可以在函数

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

中来实现。

代码:

view plain

  1. - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
  2. {
  3. int  remainTextNum_=100;
  4. //计算剩下多少文字可以输入
  5. if(range.location>=100)
  6. {
  7. remainTextNum_=0;
  8. return NO;
  9. }
  10. else
  11. {
  12. NSString  * nsTextContent=string.text;
  13. int   existTextNum=[nsTextContent length];
  14. remainTextNum_=100-existTextNum;
  15. return YES;
  16. }
  17. }

UITextView 除了可以在函数

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

中按照上面类似的办法处理以外,还可以在函数

- (void)textViewDidChange:(UITextView *)textView  中处理。

代码如下:

view plain

  1. //在这个地方计算输入的字数
  2. - (void)textViewDidChange:(UITextView *)textView
  3. {
  4. NSString  * nsTextContent=textView.text;
  5. int   existTextNum=[nsTextContent length];
  6. remainTextNum_=100-existTextNum;
  7. }