我可以被认为是iOS应用程序的新手,
现在我这里有一个小问题,在我的代码中我添加了
[myTextView becomeFirstResponder]
因为我希望键盘固定在屏幕上。
我碰巧在同一个屏幕上有一个 actionSheet
,我注意到每次我调用操作表来关闭时,键盘也会关闭,而无需我调用 [myTextView resignFirstResponder]
。这很烦人,因为当我关闭操作表时,我真的不想关闭键盘,我希望键盘保留在屏幕上。
请有人向我解释一下,如果您知道一些解决方案,如果您能提供帮助,我将很高兴。
谢谢!
奇怪,我看到,如果iOS需要隐藏
UIKeyBoard
显示UIActionSheet
的原因或其他什么,那么它会重新显示UIKeyBoard
回来,你可以做两件事来测试,
1)寻找
[myTextView resignFirstResponder]
并在那里放置断点,
2) 如果您实现了
UITextView
委托,- (void)textViewDidEndEditing:(UITextView *)textView
也将断点放在那里。
3) 如果您发现光标在
UIActionSheet
关闭时进入断点,那么您必须更正隐藏它的流程。
如果你还是不明白,你可以重新显示
,当UIKeyBoard
被解雇时,用UIActionSheet
。[myTextView becomeFirstResponder]
您可以在控制器的.m文件中使用私有本地类别
@interface UIActionSheet (NonFirstResponder)
@end
@implementation UIActionSheet (NonFirstResponder)
- (BOOL)canBecomeFirstResponder
{
return NO;
}
@end
它将把您的键盘保存在呈现的操作表上。但是,当您尝试关闭操作表时,它将导致以
结尾的系统调用链[NSNotificationCenter postNotificationName:object:userInfo:]
[UIInputViewTransition postNotificationForTransitionStart]
这里我们得到UIKeyboardWillHideNotification并且键盘被系统关闭。
因此,您只能将 textView 标记为单击操作表按钮时的第一响应者。但它可能会导致一些额外的 UI 转换。