zoukankan      html  css  js  c++  java
  • iOS textField的一些奇怪问题

    1.创建一个textField,字数限制20,去掉收尾空格

    遇到的问题: iOS9以下,中文输入的情况下,点击联想字输入是不会回调

    在iOS11上如果不设置textField的边框,它的显示会有问题,暂时未找到问题产生的原因,先这样处理吧

    //输入文本框
        _textField.font = [UIFont systemFontOfSize:16];
        _textField.textColor = UIColorFromRGB(0x111111);
        _textField.backgroundColor = [UIColor whiteColor];
        _textField.textAlignment = NSTextAlignmentLeft;
        _textField.returnKeyType = UIReturnKeyDone;
        _textField.delegate = self;
        _textField.placeholder = @"请输入分类名称";
        _textField.clearButtonMode = UITextFieldViewModeWhileEditing;//后面的删除小按钮
        _textField.layer.borderColor = [UIColor whiteColor].CGColor;
        _textField.layer.borderWidth = 1.0;
        _textField.layer.masksToBounds = YES;
        if (!IOS9) {
            [_textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
        }
        
        //字数监控
        _pageLabel.text = [NSString stringWithFormat:@"%@/%@", @(0), @(kAgendaLabelMaxLength)];
        _pageLabel.textAlignment = NSTextAlignmentRight;
        _pageLabel.font = [UIFont systemFontOfSize:13];
        _pageLabel.backgroundColor = [UIColor clearColor];
        _pageLabel.textColor = UIColorFromRGB(0x999999);

    2.实现协议

    #pragma mark - UITextFieldDelegate
    
    -(BOOL)textFieldShouldClear:(UITextField *)textField {
        textField.text = @"";
        _pageLabel.text = [NSString stringWithFormat:@"%@/%@", @(0), @(20)];return NO;
    }
    
    - (void)textFieldDidBeginEditing:(UITextField *)textField {
        NSString *originString = textField.text;
        NSUInteger newCount = [originString length];
        _pageLabel.text = [NSString stringWithFormat:@"%@/%@", @(MIN(newCount, 20)), @(20)];
    }
    
    - (void)textFieldDidEndEditing:(UITextField *)textField {
        NSString *originString = textField.text;
        NSUInteger newCount = [originString length];
        _pageLabel.text = [NSString stringWithFormat:@"%@/%@", @(MIN(newCount, 20)), @(20)];
    }
    
    - (void)textFieldDidChange:(UITextField *)textField {
        NSString *originString = textField.text;
        NSUInteger newCount = [originString length];
        _pageLabel.text = [NSString stringWithFormat:@"%@/%@", @(MIN(newCount, 20)), @(20)];if(textField.text.length > 20 && textField.markedTextRange == nil){
            textField.text = [textField.text substringToIndex:20];
        }
    }
    

    //iOS9以下,中文输入的情况下,点击联想字输入是不会回调

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
        // 如果是删除键
        if ([string length] == 0 && range.length > 0)
        {
            NSString *originString = textField.text;
            NSString *rangeString = [originString substringWithRange:range];
            NSUInteger newCount = [originString length] - [rangeString length] + [string length];
            
            _pageLabel.text = [NSString stringWithFormat:@"%@/%@", @(MIN(newCount, 20)), @(20)];return YES;
        }
        
        NSString *originString = textField.text;
        NSString *rangeString = [originString substringWithRange:range];
        NSUInteger newCount = [originString length] - [rangeString length] + [string length];
        _pageLabel.text = [NSString stringWithFormat:@"%@/%@", @(MIN(newCount, 20)), @(20)];
        
        NSString *str = [textField.text stringByReplacingCharactersInRange:range withString:string];
        if (str.length > 20) {
            textField.text = [str substringToIndex:20];
            return NO;
        }
        
        return YES;
    }

    2.最后的效果图

  • 相关阅读:
    使用Python快速生成虚拟的超大文件
    常用的 adb 命令合集
    Jmeter 性能测试之反向代理录制性能测试脚本
    论医院网络时钟系统(NTP时钟服务器)的重要性
    北斗时钟装置(卫星时间同步系统)应用自动化系统探讨
    解决前端部署到Nginx非根目录下页面出现空白的问题
    解决docker中Easyexcel因缺少字体无法导出的问题
    看图认识HTML5
    看图知Docker
    ASIS CTF Finals 2020
  • 原文地址:https://www.cnblogs.com/qiyiyifan/p/8309193.html
Copyright © 2011-2022 走看看