我可以移动UIKeyboard的框架吗?

时间:2012-06-08 06:29:16

标签: iphone objective-c ios uikeyboard

我正在尝试做什么:

我使用的是新Facebook和Path应用程序使用的相同类型的侧边菜单。以下是我基于它的代码:https://github.com/pkluz/ZUUIRevealController(点击链接查看图片)。

基本上,在我的“主”视图中,始终显示键盘。当我'显示'侧视图时,我希望键盘与主视图的其余部分一起滑开,就像键盘连接到主视图一样。目前,它只是覆盖其他所有内容。

-

我是否应该尝试找到实现这一目标的方法?或者键盘的框架是否锁定得非常紧张?

更好的是,如果你可以解释一种方法来做到这一点,使用GitHub代码我基于 - 我肯定会给予赏金(虽然不能设置它,因为问题需要在几天)!

2 个答案:

答案 0 :(得分:6)

解决了......实际上这是一种非常干净的方法。

UIView * activeKeyboard = activeInputView.inputAccessoryView.superview;
activeKeyboard.frame = newFrame;

就这么简单。没有未记录的API调用,但仍然指责它通过批准过程。

请记住,这段代码只是重要的一点,周围还有其他代码可以实现这一切 - 但这不应该太难以弄清楚你是否需要实现相同的目标:)

答案 1 :(得分:2)

有可能,我已经尝试过这样的东西来复制Messages应用程序的行为(用户可以通过滚动消息列表来拖动键盘)。

也就是说,没有官方认可的方法可以做到这一点,因此任何解决方案都可能是hacky并且可能会因操作系统更新而中断。

我这样做的方法基本上是找到键盘所在的UIWindow并修改其transform属性。键盘窗口当前使用私有类UITextEffectsWindow,但这可能会随时更改,因此我不会依赖它。即使键盘位于您可以访问的窗口(通过[[UIApplication sharedApplication] windows])这一事实也没有在任何地方记录,可能会发生变化。

我不确定我是否会在已发布的应用中执行此类操作。如果你尝试,你必须防御性地编码非常,以确保如果键盘的实现细节在将来发生变化,它不会中断。