ActionSheet Dismiss后键盘自动隐藏

时间:2013-10-16 06:33:32

标签: objective-c uitextview uiactionsheet

我可以将其视为iOS应用中的新手,

现在我有一点问题,在我添加的代码中 [myTextView becomeFirstResponder]因为我希望键盘固定在屏幕上。 我碰巧在同一个屏幕上有一个actionSheet,我注意到每当我打电话给行动表解除时,键盘也会在我不必打电话[myTextView resignFirstResponder]时解散。这很烦人,因为当我关闭动作表时,我真的不想用它取消键盘,我希望键盘保留在屏幕上。

有人请向我解释一下,如果你知道一些解决方案,如果你愿意,我会很高兴。

谢谢!

2 个答案:

答案 0 :(得分:0)

奇怪,我已经看到了,如果iOS需要隐藏UIKeyBoard显示UIActionSheet之类的东西,那么它会重新显示UIKeyBoard,你可以做两件事进行测试,

1)寻找[myTextView resignFirstResponder]并在那里设置断点,

2)如果您实施了UITextView委托,- (void)textViewDidEndEditing:(UITextView *)textView也会设置断点。

3)如果您在UIActionSheet被解雇时发现光标进入断点,那么您需要纠正隐藏它的流程。

  

如果您仍然无法理解,可以UIKeyBoardUIActionSheet被解雇时[myTextView becomeFirstResponder]重新展示。

答案 1 :(得分:0)

您可以在控制器的.m文件中使用私有本地类别

@interface UIActionSheet (NonFirstResponder)
@end

@implementation UIActionSheet (NonFirstResponder)
- (BOOL)canBecomeFirstResponder
{
    return NO;
}
@end

它会将您的键盘保存在活动表上。但是当您尝试关闭操作表时,它将导致以

结尾的系统调用链
[NSNotificationCenter postNotificationName:object:userInfo:]
[UIInputViewTransition postNotificationForTransitionStart]

这里我们得到UIKeyboardWillHideNotification,键盘由系统关闭。

因此,您只能在操作表按钮单击时将textView标记为第一响应者。但它可能会导致一些额外的UI转换。