Ios 键盘旋转时隐藏
我正在开发一款iPad应用程序。在其中一个视图中,我有一个子视图,它在按钮点击事件中出现和消失。子视图包含一个Ios 键盘旋转时隐藏,ios,text,input,keyboard,Ios,Text,Input,Keyboard,我正在开发一款iPad应用程序。在其中一个视图中,我有一个子视图,它在按钮点击事件中出现和消失。子视图包含一个UITextView。默认情况下,我将其设为第一响应程序,以便在视图出现时立即显示键盘。当触发UIKeyboardWillHideNotification即隐藏键盘时,子视图也会消失 现在的问题是,只要应用程序旋转,UIKeyboardWillHideNotification就会被系统触发,从而使子视图消失。我希望键盘保持在屏幕上 发生了什么事,我该怎么解决 注意:视图和子视图都有单独的
UITextView
。默认情况下,我将其设为第一响应程序,以便在视图出现时立即显示键盘。当触发UIKeyboardWillHideNotification
即隐藏键盘时,子视图也会消失
现在的问题是,只要应用程序旋转,UIKeyboardWillHideNotification
就会被系统触发,从而使子视图消失。我希望键盘保持在屏幕上
发生了什么事,我该怎么解决
注意:视图和子视图都有单独的视图控制器。UIKeyboardWillHideNotification在子视图的视图控制器类中接收。您可以在shouldAutoRotate方法中声明一个BOOL变量,该变量在调用时设置,然后在用于显示和隐藏子视图的选择器方法中,如果天气视图是否旋转,则可以使用一个简单的条件 像这样:
if(viewRotated)
{
subView.hidden = YES;
}
viewRotated = NO;
编辑部分:我不确定这段代码到底是怎么回事,但它在我的一个应用程序中运行得很好,我的朋友编写了ipad代码
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if(UIInterfaceOrientationIsPortrait(interfaceOrientation))
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillShowNotification
object:nil];
}
else
{
[[NSNotificationCenter defaultCenter] removeObserver:self
name:UIKeyboardWillShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:UIKeyboardWillShowNotification
object:nil];
}
return YES;
}
如果在此方法中再次添加这些通知未触发UIKeyboardWillHideNotification,则可以再次添加通知
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
您可以使用BOOL变量来记录它是否在旋转。当它旋转时,你什么也做不了。我错过了一个小细节。。。“我的视图”和“子视图”都有单独的视图控制器。UIKeyboardWillHideNotification在子视图的视图控制器类中接收。并且子视图不接收旋转通知。UIKeyboardWillHideNotification是在收到其他任何东西之前收到的,这在我看来并不正常。旋转不应触发UIKeyboardWillHideNotification。还是这样?