ios – 当UITextField子类的动画位置时,文本跳转

当我为UITextField子类的位置设置动画时,字段中的文本会跳过与保存它的UITextField的位置,这是非常令人震惊的,我无法弄清楚为什么会这样发生:

我的子类在文本字段的右侧添加一个按钮,当点击调用视图控制器上的一个方法时,它会更改文本框边框颜色,并通过更改文本字段的顶部空间约束将文本字段移动到屏幕上方,以及位于其上方的其他两个视图.

[UIView animateWithDuration:0.3
                     animations:^{
                         self.tableViewBottomSpaceConstraint.constant = 0;
                         self.mainLabelHeightConstraint.constant = 0;
                         self.subLabelTopSpaceConstraint.constant = 0;
                         self.postCodeFieldTopSpaceConstraint.constant = 12;
                         [self.view layoutIfNeeded];

                     }];

解决方法

我修正了这个.将您的代码更改为此.它会奏效
[UIView animateWithDuration:0.3
                 animations:^{
                     self.tableViewBottomSpaceConstraint.constant = 0;
                     self.mainLabelHeightConstraint.constant = 0;
                     self.subLabelTopSpaceConstraint.constant = 0;
                     self.postCodeFieldTopSpaceConstraint.constant = 12;
                     [self.view layoutSubviews];

                 }];

或者如果这不工作,而不是

[self.view layoutSubviews];

使用文本字段和layoutSubviews的父视图.在我的情况下这是有效的.我认为这个答案有资格获得赏金.谢谢.

编辑:

我发现了这个的原因.当我们尝试布局IfNeeded时,它意味着首先改变外部布局,并且在更改其布局之后,更改UITextField的内部文本,因为我们没有强制更改该文本字段的所有子视图的布局.所有UITextField都由UIView和Label等基本元素组成.但是当我们尝试同时布局浏览其所有子视图的不断变化的布局.这是为什么弹跳消失了.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...