美文网首页iOS常用
iOS开发 UITextField修改光标起始位置

iOS开发 UITextField修改光标起始位置

作者: AR24 | 来源:发表于2020-10-21 09:53 被阅读0次

    修改UITextField光标位置的三个方法

    1.既修改了光标起始位置,同时也修改了文本起始位置,并且文字不会在超出文本框时,被挤到文本边框处。建议给textField添加一个leftView和rightView这个方式:

        CGRect frame = self.textField.frame;
        frame.size.width = 10;// 距离左侧的距离
        UIView *leftview = [[UIView alloc] initWithFrame:frame];
        self.textField.leftView = leftview;
        self.textField.leftViewMode = UITextFieldViewModeAlways;
        CGRect frame1 = self.textField.frame;
        frame1.size.width = 10;// 距离右侧的距离
        frame1.origin.x = frame1.size.width - 10;
        UIView *rightView = [[UIView alloc] initWithFrame:frame1];
        self.textField.rightView = rightView;
        self.textField.rightViewMode = UITextFieldViewModeAlways;
    

    1.2 可以同时修改光标和文本位置,但是除了设置paddingLeft有用之外,其它几个方向上的会失败,而且超出输入范围之后,要么起始位置改变,要么文本不会主动左移显示最后输入的文本(不建议使用)

    [self.textField setValue:[NSNumber numberWithInt:10] forKey:@"paddingLeft"];
    

    1.3 新建一个textField,重载以下方法

    //未编辑状态下的起始位置
     - (CGRect)textRectForBounds:(CGRect)bounds {
         return CGRectInset(bounds, 5, 0);
     }
     // 编辑状态下的起始位置
     - (CGRect)editingRectForBounds:(CGRect)bounds {
         return CGRectInset(bounds, 5, 0);
     }
     //placeholder起始位置
     - (CGRect)placeholderRectForBounds:(CGRect)bounds {
         return CGRectInset(bounds, 5, 0);
     }
    

    相关文章

      网友评论

        本文标题:iOS开发 UITextField修改光标起始位置

        本文链接:https://www.haomeiwen.com/subject/ptbkmktx.html