我有一个带自定义键盘的UITextField,基本上就像一个计算器。我希望我的键盘默认显示,所以我在[self.topInputTextField becomeFirstResponder];
中使用viewDidLoad
,我认为这是非常常见的用法。但是,它会在我的文本域中引起一些非常奇怪的行为。
当我将textfield设置为viewDidLoad中的第一个响应者时,每次完成编辑后,文本将跳转,当我单击另一个文本字段并再次单击第一个文本字段时,第一个文本中的文本田野有时会向下移动并消失,但有时不会。我觉得这很难描述,所以我为它录制了一个GIF图像。
我确信[self.topInputTextField becomeFirstResponder];
导致问题的原因是,当我对该行代码进行评论时,一切都恢复正常。这是我在评论该行后的GIF:
这对我来说很奇怪,在2 GIF文件之间,我所做的唯一改变是注释掉那行代码。我在SE上找不到任何解决方案。任何想法都将非常感激。
修改 还有一件事是我试图改变字体和字体大小,它们都有类似的奇怪行为。
*编辑2:** 这是我如何设置我的文本域,我没有做任何花哨的事情
答案 0 :(得分:5)
尝试在viewDidAppear
中调用键盘,此方法在viewDidLoad
之后调用。我认为这是因为你只应该在用户看似已经加载的视图上调用键盘,所以如果你在视图实际出现之前调用它会导致意外行为。
答案 1 :(得分:4)
viewDidLoad对于调用它来说为时尚早,UI还没有确定您的屏幕大小,甚至设备所在的方向。它还不是真正的用户界面...在willAppearAnimated中尝试:。