【问题标题】:iOS PresentViewController with KeyboardiOS PresentViewController 带键盘
【发布时间】:2018-10-07 12:58:02
【问题描述】:

我真的在键盘上苦苦挣扎!我有一个像这样呈现的 viewController:

self.present(viewController, animated: true, completion: nil)

在这个 viewController 中,我有一个像这样成为FirstResponder 的文本字段:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.textField.becomeFirstResponder()
}

问题是当视图出现时,键盘就会弹出。它一点也不光滑。我想让它完全像在原生 iOS 应用程序 Message 中一样:当您单击撰写消息时(右上角)。它呈现一个带有键盘的新viewController,全部动画

任何帮助将不胜感激。

【问题讨论】:

  • 当您说键盘弹出时,您的意思是它根本没有动画?它只是出现?
  • @slickdaddy 是的!没有动画,只是眨眼

标签: ios swift animation keyboard presentviewcontroller


【解决方案1】:

尝试将becomeFirstResponder() 放入viewDidLayoutSubviews()

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    textField.becomeFirstResponder()
}

【讨论】:

  • 如果这不起作用,除了上面代码示例中提供的信息之外,还需要额外的信息。以这种方式从一个干净的项目中展示一个带有文本字段的视图控制器,可以使您的期望动画化。如果您通过模拟器进行测试,请尝试使用物理设备,我过去在使用键盘和模拟器时遇到过问题。
  • 这里是我调用 presentViewController 方法的代码:@objc private func addButtonAction() { let vc = viewController() let navigationController = navigationController(rootViewController: vc) DispatchQueue.main.async { self.present(navigationController, animated: true, completion: nil) } }
  • 而且我尝试在手机上编译,问题依旧
【解决方案2】:

将其移至 viewDidAppear

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    self.textField.becomeFirstResponder()
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    相关资源
    最近更新 更多