关于TextField的点击向下偏移问题

版权声明:本文为博主原创文章,未经博主允许不得转载。

     今天使用TextFiled的时候碰到了这个问题:TextField点击编辑会出现向下偏移的状态,编辑完成后又会复原。不过很奇怪,之前使用的时候并不会出现这种原因。网上很多朋友说和automaticallyAdjustsScrollViewInsets有关系, 然而我测试后发现并没有关系,但这个说法蛮多人同意。my god。


我的思路是textFiled 既然发生了偏移,并且复原那就很可能是transform或者bounds发生了偏移。然而我测试的结果并不如我想象的那样

- (void)textFieldDidBeginEditing:(UITextField*)textField{

NSLog(@"textFild.bounds :%@", NSStringFromCGRect(textField.bounds));

NSLog(@"textFild.transform.y :%f", textField.transform.ty);

}


2016-11-02 10:57:22.248 XX[2614:93852] textFild.bounds :{{0, 0}, {128.5, 30}}

2016-11-02 10:57:22.248 XX[2614:93852] textFild.transform.y :0.000000


我疑惑是不是还有其他的属性可以控制显示的偏移量。然而当我使用transform去改变偏移量的时候,却发现下移能够被TextFiled所改变。代码如下:

- (void)textFieldDidBeginEditing:(UITextField*)textField{

textField.transform=CGAffineTransformMakeTranslation(0, -3);

}


- (void)textFieldDidEndEditing:(UITextField*)textField{

textField.transform=CGAffineTransformMakeTranslation(0,0);

}

这个时候我就考虑是不是frame被改变了。然后并没有...


总结: 虽然能够用能够使用transform 去解决 TextFiled的向下偏移的问题,但是并没有找到导致TextFiled向下偏移的原因 。授人鱼不如授人渔,然而能力有限。希望能够解决的朋友不吝赐教。


继续更新,在这里感谢武林萌蕏的帮助,通过参考出处:http://stackoverflow.com/questions/39556087/uitextfield-chinese-character-moves-down-when-editing-in-ios-10可以找到许多大牛给出的各种方法。我在这里列举出2个。

方法一:

设置 textField.clearButtonMode = UITextFieldViewModeWhileEditing; 可以非常简单地解决UITextFiled的下移问题。


方法二:

创建一个子类继承 :UITextField,重写下面2个方法:

- (CGRect)textRectForBounds:(CGRect)bounds {

return CGRectInset(bounds, 2, 1);

}

- (CGRect)editingRectForBounds:(CGRect)bounds {

return CGRectInset(bounds, 2, 1);

}

你可能感兴趣的:(关于TextField的点击向下偏移问题)