0

我可以被认为是iOS应用程序的新手,

现在我在这里有一个小问题,在我添加的代码中, [myTextView becomeFirstResponder]因为我希望键盘固定在屏幕上。我碰巧actionSheet在同一个屏幕上有一个,我注意到每次我调用操作表关闭时,键盘也会关闭而无需我调用[myTextView resignFirstResponder]。这很烦人,因为当我关闭操作表时,我真的不想用它关闭键盘,我希望键盘留在屏幕上。

有人请向我解释一下,如果你知道一些解决方案,如果你能提供帮助,我会很高兴。

谢谢!

4

2 回答 2

0

奇怪,我看到了,如果iOS需要隐藏UIKeyBoard显示原因UIActionSheet什么的,那么它会重新显示UIKeyBoard背面,你可以做两件事进行测试,

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

2)如果你实现了UITextView委托,- (void)textViewDidEndEditing:(UITextView *)textView也把断点放在那里。

3)如果您发现您的光标在关闭时进入断点,UIActionSheet那么您必须更正隐藏它的流程。

如果您仍然无法弄清楚,您可以重新显示UIKeyBoard,当UIActionSheet被解雇时,与[myTextView becomeFirstResponder]

于 2013-10-16T06:44:09.200 回答
0

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

@interface UIActionSheet (NonFirstResponder)
@end

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

它会将您的键盘保存在操作表上。但是当您尝试关闭操作表时,它将导致系统调用链以

[NSNotificationCenter postNotificationName:object:userInfo:]
[UIInputViewTransition postNotificationForTransitionStart]

在这里我们得到 UIKeyboardWillHideNotification 和键盘被系统关闭。

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

于 2014-01-27T16:14:04.277 回答