【问题标题】:Why keyboard hides when I apply custom push animation?为什么应用自定义推送动画时键盘隐藏?
【发布时间】:2015-04-14 16:19:46
【问题描述】:

我有两个带有 UITextFields 的控制器。我需要在它们之间使用显示的键盘在过渡旁边进行自定义过渡。

当我使用默认推送动画时,一切都很好。但是,如果我从animationControllerForOperation 返回我的转换类,则键盘在转换之前隐藏并在转换之后显示。

那么,有人可以向我建议一个解决方案或解释,为什么键盘隐藏在自定义转换中?过渡持续时间 = 0.4,我在 viewDidLoad 中设置了 [textField becomeFirstResponder]

这是一个视频:https://www.youtube.com/watch?v=gs16tMsU4qY

【问题讨论】:

  • 你能展示你的过渡动画代码吗?另外,隐藏/表演真的那么糟糕吗?我自己几乎没有注意到它。
  • 我在您的示例中看不到任何理由甚至使用多个视图控制器来完成您想要完成的任务。这可以通过为 textField 本身设置动画来更改内容而无需移入和移出控制器来轻松处理。在更换控制器时保持键盘打开似乎使 IMO 感到困惑。

标签: ios objective-c custom-transition


【解决方案1】:

看看 UIViewControllerTransitionCoordinator 类。

这里是类似问题的答案:https://stackoverflow.com/a/21017900

【讨论】:

  • animateAlongsideTransition 出于某种原因仅用于推送,当我从animationControllerForOperation 返回我自己的UIViewControllerAnimatedTransitioning 时,键盘视图完全忽略了我对其框架的更改。
【解决方案2】:

编辑

或者更简单的方法:

实现UITextField的委托方法- (BOOL) textFieldShouldEndEditing: (UITextField*) textField,只要下一个VC还没有加载就返回NO...


也许您可以尝试覆盖 UITextField- (BOOL) canResignFirstRespondermethod 以返回 NO,只要新视图控制器的视图尚未加载。 (例如,通过设置BOOL 属性,当新视图控制器的视图加载时设置为YES)。喜欢:

- (BOOL) canResignFirstResponder {
    return nextVCIsLoaded;
}

也许这可能会阻止键盘被隐藏(这似乎是在“推”操作中的某处自动发生的)。

希望这种方法有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 2015-01-26
    相关资源
    最近更新 更多