Ale*_*lds 3 objective-c uiviewcontroller ios inputaccessoryview
我知道视图控制器必须是 firstResponder 才能使 inputAccessory 保持在底部。我正在使用自定义 inputView/键盘。我可以通过删除 inputView 但不辞职第一响应者来使用完成按钮手动关闭它。但是,当我启用交互式拖动以在我的滚动视图上关闭时,代码会自动退出第一响应者。那么我怎样才能使用交互式拖动来关闭并保持我的视图控制器作为第一响应者呢?以前有人做过这个吗?我想也许这是不可能的,我可能需要使用手势识别器制作我自己的交互式拖动来消除。
更多信息:我有一个按钮,可以在标准键盘和我的自定义键盘之间切换。我已经看到驳回这些原因 2 键盘确实驳回了通知。我以为我可以在 keyboardDidHide 方法中成为 firstResponder ,但这并没有很好地工作,因为我无法区分手动关闭键盘的时间和交互式拖动的时间。这很重要,因为当我手动关闭时,我不需要重新加载输入视图或成为第一响应者,因为我已经处理了它。
任何建议都会很棒。我试图在 UIViewController 级别上使用 inputView 和 inputAccessoryView 。
经过一天的拉扯头发,我有了答案。
使用canResignFirstResponder我的 viewcontroller 可以解决问题。在viewWillAppear我设置了一个BOOL responderOverride = YES;
在viewWillDisappear我打电话
responderOverride = NO;
[self resignFirstResponder];
当滚动视图上的交互式拖动尝试 resignFirstResponder 时,canResignFirstResponder返回 no 以防止我的 viewcontroller 退出并保持我的输入附件保留并位于屏幕底部。
还有很多其他代码可以重新加载输入视图,但由于真正的问题是如何强制控制器保持第一响应,这样我们就不会丢失输入附件视图,因此该解决方案有效。
| 归档时间: |
|
| 查看次数: |
1308 次 |
| 最近记录: |