版权声明:本文为博主原创文章,未经博主允许不得转载。
今天使用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);
}
网友评论