首页 文章

使用拖动关闭时,如何使inputAccessoryView保持在屏幕上?

提问于
浏览
1

我知道视图控制器必须是firstResponder才能使inputAccessory保持在底部 . 我正在使用自定义inputView /键盘 . 我可以通过删除inputView而不是让第一响应者辞职来使用完成按钮手动关闭它 . 但是,当我在滚动视图上启用交互式拖动时,代码会自动重新响应第一个响应者 . 那么我如何使用交互式拖动来解除并保持我的viewcontroller作为第一响应者?有人这样做过吗?我想也许这是不可能的,我可能需要使用手势识别器进行自己的交互式拖动 .

更多信息:我有一个按钮,可以在标准键盘和我的自定义键盘之间切换 . 我已经看到解雇这些原因2键盘确实解除了通知 . 我以为我可以成为keyboardDidHide方法中的firstResponder,但是由于我无法区分手动关闭键盘和交互式拖动时的区别,因此无法正常工作 . 这很重要,因为当我手动解雇时,我不需要重新加载输入视图或成为第一响应者,因为我已经处理过了 .

任何建议都会很棒 . 我试图在UIViewController级别上使用inputView和inputAccessoryView .

1 回答

  • 3

    经过一天拉我的头发后,我有一个答案 .

    使用我的viewcontroller的 canResignFirstResponder 就可以了 . 在 viewWillAppear 我设置 BOOL responderOverride = YES;

    viewWillDisappear 我打电话

    responderOverride = NO; [self resignFirstResponder];

    当scrollview上的交互式拖动尝试resignFirstResponder时, canResignFirstResponder 返回no,这会阻止我的viewcontroller重新签名并保持我的输入附件保留并位于屏幕底部 .

    有很多其他代码重新加载输入视图,但由于真正的问题是如何强制控制器保持第一响应者,所以我们不会丢失输入附件视图,然后这个解决方案工作 .

相关问题