解除UIKeyboard后,在UIPopoverController中显示UIDatePicker

时间:2011-06-06 16:35:17

标签: cocoa-touch xcode ipad uipopovercontroller uikeyboard

我正用这个把头发拉出来。

我在popover中有一个表,允许用户编辑一些数据。大多数这些可编辑单元格需要用户通过键盘输入数据,但需要一个UIDatePicker。当UIDatePicker呈现给用户时,它会通过抓取视图的大小并执行动画从弹出窗口的底部滑入。但是,如果在关闭键盘后发生这种情况,则在弹出窗口重置回其原始位置之前抓取视图的大小(即,当弹出窗口向屏幕顶部“压扁”后,弹出窗口重新调整为正常大小)这使得UIDatePicker在popover的中间位置。

我已尝试添加延迟,并使用UIKeyboardWillHideNotification,但我无法使其正常工作。

在获取视图大小并执行动画之前,如何等待弹出框完成大小调整?

更新1

我自己设法解决了这个问题,但我会在这里发布答案,只是其他人需要它。基本上我设置了一个CGRect变量,它在视图加载时填充了视图边界。然后,每次我想要为UIDatePicker设置动画时,不是抓取视图的边界,而是简单地使用CGRect变量。

更新2

上述修复在大多数情况下都有效,但并非适用于所有情况。我现在遇到的问题是在键盘完全关闭之前显示一个新的弹出窗口(即,它的动画输出的一半)。这给出了它当前大小的界限,然后再调整到它需要的实际大小。此外,一旦解除键盘,弹出窗口似乎不会调整回原来的大小。

任何想法的人?

1 个答案:

答案 0 :(得分:2)

解决。

当弹出代理中的键盘被解除时,我会检查是否正在显示弹出窗口,然后将其重新定位到其原始大小和位置。如果有人有兴趣,我有代码。只是评论我。