键盘显示部分ios6

时间:2012-10-15 10:25:44

标签: ios keyboard ios6

我一直坚持解决为什么我的应用程序中的键盘部分出现在屏幕上或者根本没有出现。 它只是一个简单的视图控制器;

[self presentViewController:vc_browser animated:YES completion:^{}];

我第一次呈现它,一切正常。然后我用

解雇它
[self dismissModalViewControllerAnimated:NO];

当再次(和进一步)呈现这个$#%时!发生。从通知提供键盘框架

2012-12-30 00:40:21.618测试[12080:907]键盘框架原始{{160,443},{0,44}}

2012-12-30 00:40:21.619测试[12080:907]键盘帧转换{{320,886},{0,88}}

2012-12-30 00:40:21.836 test [12080:907] keyboard frame raw {{0,524},{320,44}}

2012-12-30 00:40:21.837测试[12080:907]键盘帧转换{{0,1048},{640,88}}

在下图中焦点位于webView(实际是谷歌搜索字段)

如果我将焦点移动到键盘上方的文本字段,则记录为{{inf,inf},{0,0}}

viewWillAppear和viewDidAppear未实现

呈现的视图控制器以这种方式加载

_vc = [[VC alloc] initWithNibName:@"VC" bundle:nil];

我已尝试从其他xib或其他故事板加载此视图控制器,但问题仍然存在。

解决这个问题的任何帮助都会很棒。谢谢。

http://i.stack.imgur.com/xBNZt.png

无法使用rep< 10

1 个答案:

答案 0 :(得分:4)

我也有同样的问题。我不知道如何在你的问题上发表评论(我还是Stack Overflow的新手),所以我提供了我发现的部分答案。仍在研究完整的解决方案。

使用Xcode 4.5.1,我的应用程序使用的是iOS 6.这是一款使用Core Data的通用应用程序,iPhone端也能正常使用。 iPad侧是拆分视图。在详细信息视图控制器中,用户可以在拆分视图上打开一个完整窗口以显示照片。取消照片视图会返回拆分视图。

以下有关如何调用和解除照片浏览器的代码。

[self presentViewController:photoBrowser animated:YES completion:nil];

[self dismissViewControllerAnimated:YES completion:nil];

照片视图解散之后是我遇到键盘问题。

症状:使用UITextFields或UITextViews的后续视图不再自动显示键盘或键盘仅显示部分,如照片示例中所示。我使用becomeFirstResponder来调出键盘。

[self.noteEdit becomeFirstResponder];

如果我触摸任何UITextField,那么奇怪的是,该视图中的所有文本字段都会消失。

我已就此问题开通了Apple技术支持事件(TSI)。以下是他们在2012年10月12日的回复。

  

我想向您提供有关您事件的最新消息。感谢您发送代码和示例数据库。我已经能够重现这个问题。事实证明,详细视图控制器中的文本字段消失是键盘返回UIKeyboardFrameEndUserInfoKey的无效数据导致代码将滚动视图框设置为无效大小的结果。我将继续搜索这种意外键盘行为的根本原因,并在得到答案后立即回复。

我通过显示UIKeyboardFrameEndUserInfoKey userInfo值验证了他的回复。

NSLog(@"keyboardEndFrame orig.x=%f orig.y=%f size.w=%f, size.h=%f",
      keyboardEndFrame.origin.x, keyboardEndFrame.origin.y, keyboardEndFrame.size.width, keyboardEndFrame.size.height);

果然,原点x和y的值都是“inf”。大小值设置为零。

现在我只需知道这一切的原因。还在研究,但我会告诉你任何Apple的回复。到目前为止,这个让我感到难过。

PS ...我的应用程序(iPhone和iPad)在iOS 5中运行良好。

更新 - 2012年10月17日:

我的键盘问题的原因是由于我在实现iOS 6处理Orientation的新方式时出错。我已将子视图控制器子类化为包含以下内容:

- (NSUInteger)supportedInterfaceOrientations {
return [[self splitViewController] supportedInterfaceOrientations];}

更正的代码是:

- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskPortrait;}

当我的Apple技术支持事件回复以下内容时,我向我指出了这一点:

  

我已经找到了键盘故障的根本原因。在SplitController.m中,supportedInterfaceOrientations方法调用:   [[self splitViewController] supportedInterfaceOrientations];并返回收到的值。但是,拆分视图控制器的splitViewController属性为nil,因为不允许使用拆分视图控制器内部其他拆分视图控制器。因此,返回的值为0,这是一个无效的方向掩码。

我的应用程序根据堆栈顶部的视图支持不同的方向类型,但我错误地编写了拆分视图控制器。

Apple技术支持小组对我帮助很大。希望这些信息可以帮到你。

干杯!