【问题标题】:Objective-C : Odd Behavior With UITextFieldObjective-C:UITextField 的奇怪行为
【发布时间】:2025-12-31 07:40:06
【问题描述】:

当用户点击我的应用上的“登录”按钮时,视图会以动画形式显示如下:

- (IBAction)popLoginView:(id)sender {

    CGRect frame=self.animationView.frame;
    frame.origin.y=0;

    [UIView animateWithDuration:0.6 animations:^{
        self.animationView.frame=frame;
    }];
}

原来的 y 原点是 800,所以,不在屏幕上。

但是,当用户开始在 animationView 上编辑 UITextField 时,animationView 会消失。视图的原始内容显示,键盘存在。我可以确认输入键盘仍然会填充文本字段,即使我再也看不到它了:(

为什么会这样?

【问题讨论】:

  • 您必须在 textDidChange 或类似方法中更改来源。或者动画视图没有正确设置
  • 你在使用自动布局吗?

标签: ios objective-c uitextfield


【解决方案1】:

如果您使用的是 AutoLayout,那么当 AutoLayout 下次计算所有内容时,您的帧更改将被丢弃。您需要做的是在 y 位置添加一个约束,然后为约束而不是框架设置动画

【讨论】:

  • 感谢您澄清这一点。有没有给 y 位置添加约束的代码示例?
  • 一开始你是如何配置你的视图的?它是如何在垂直轴上定位的?
  • 基本上我只是将视图顶部空间从底部布局初始设置为 1,所以它就在屏幕外。