zoukankan      html  css  js  c++  java
  • 限制UITextField/UITextView的输入字数与中文输入之后的英文换行问题

     

    要限制一个UITextField/UITextView的输入字数,首先想到的应该是通过UITextFieldDelegate/UITextViewDelegate
    的代理方法来限制,那么如何来更好的限制输入字数呢,下面我们来看看:

    TextView。幸运的是,当我们点进去UITextView.h头文件里时,会发现- (void)textViewDidChange:(UITextView *)textView;这个代理方法,我们只需要在这个方法里实现字数限制就好

    - (void)textViewDidChange:(UITextField *)textView
    {
        if (textView == self.textView) {
            if (textView.text.length > 20) {
                textView.text = [textView.text substringToIndex:20];
            }
        }
    }
    

    TextField。Textfield就没有那么幸运了,当我们点进去UITextField.h头文件的时候,怎么也找不到- (void)textFieldDidChange:(UITextField *)textField方法,就在我们寻觅上述回调方法而不得时,可能会发现最下面有这么个消息通知名称:

    UIKIT_EXTERN NSString *const UITextFieldTextDidChangeNotification;
    

    不过,监听消息还要记得解除监听,通常我还习惯把监听消息的代码统一放在一个方法中,看起来有点“大动干戈”。
    所幸的是UITextField本身提供了相应的事件监听:

    [textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
    

    这样就可以更好地限制输入长度:

    - (void)textFieldDidChange:(UITextField *)textField
    {
        if (textField == self.titleField) {
            if (textField.text.length > 20) {
                textField.text = [textField.text substringToIndex:20];
            }
        }
    }

    uitextview 在中文后输入英文到行尾的时候,中文后的英文全部换到下一行

    uitextview在中文后输入英文到行尾的时候,中文后的英文全部换到下一行,如下图所示:

    Mou icon

    会出现自动换行的问题,当然我们正常输入的时候是不希望看到这种情况的,所以,要去掉这种情况,我们只需在textView的代理方法- (void)textViewDidChange:(UITextView *)textView;中实现如下代码即可

    - (void)textViewDidChange:(UITextView *)textView {
            //防止输入时在中文后输入英文过长直接中文和英文换行
            NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
            paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping;
            NSDictionary *attributes = @{    
                                         NSFontAttributeName:[UIFont systemFontOfSize:14],
                                         NSParagraphStyleAttributeName:paragraphStyle
                                         };
            textView.attributedText = [[NSAttributedString alloc] initWithString:textView.text attributes:attributes];
    }
    

    这样处理后就会看到效果如下图所示:

    Mou icon

     
  • 相关阅读:
    EF – 4.CRUD与事务
    EF – 3.EF数据查询基础(下)数据关联
    EF – 2.EF数据查询基础(上)查询数据的实用编程技巧
    响应式的入门学习
    淘宝相关模块管理
    Git相关
    Drupal相关网站推荐
    在线视频播放软件
    Linux命令的常用
    Linux下使用Git命令及Github项目
  • 原文地址:https://www.cnblogs.com/CodingMann/p/5109477.html
Copyright © 2011-2022 走看看