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

时间:2016-02-25 16:34:54

标签: ios objective-c uiviewcontroller inputaccessoryview

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

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

任何建议都会令人惊讶。我试图在UIViewController级别上使用inputView和inputAccessoryView。

2 个答案:

答案 0 :(得分:4)

经过一天的拔毛之后,我有一个答案。

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

viewWillDisappear我致电

responderOverride = NO; [self resignFirstResponder];

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

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

答案 1 :(得分:0)

select *
from Mytable
where FechaCarga >= dateadd(month, -6, (select max(FechaCarga) from MyTable))

这对我有用