我正在开发一款iPad应用程序。在其中一个视图中,我有一个子视图,它在按钮点击事件中显示和消失。子视图包含UITextView
。默认情况下,我将其设为第一个响应者,以便在视图出现时立即显示键盘。 <{1}}被触发时,子视图也会消失,即键盘被隐藏。
现在,问题在于,一旦应用程序被轮换,系统就会触发UIKeyboardWillHideNotification
,这会使子视图消失。我希望键盘保持在屏幕上。
发生了什么,我该如何解决呢?
注意:视图和子视图都有单独的视图控制器。 UIKeyboardWillHideNotification在子视图的视图控制器类中接收。
答案 0 :(得分:4)
你可以在shouldAutoRotate方法中声明一个BOOL变量,并在调用它时设置它,然后在显示和隐藏子视图的选择器方法中,你可以使用一个简单的if条件来旋转天气视图。
像这样: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
答案 1 :(得分:1)
您可以使用BOOL变量来记录它是否在旋转。然后,当它旋转时你什么都不做。