use*_*781 6 uitextfield uikeyboard ios inputview
我创建了一个自定义键盘视图并将其链接到UITextField的inputView属性.当方向发生变化时,有没有办法改变自定义inputView的高度,并且像系统键盘一样平滑动画框架变得平滑?我的键盘尺寸是768x272,当设备走向横向时,尺寸变为1024x272,但我想让它变得像1024x372一样大.当我获得UIDeviceOrientationDidChangeNotification时,如果我使用下面的代码更改框架,则更改动画不平滑.
textField.inputView.frame = CGRectMake(0,0,1024,372);
Run Code Online (Sandbox Code Playgroud)
经过多次实验,我找到了自己问题的最佳答案。一个简短的答案是当你得到 时改变框架UIKeyboardDidHideNotification。
自定义 inputView 嵌入到由系统控制的另一个视图中,称为UIPeripheralHostView. 因此,在错误的时间更改自定义 inputView 不会立即反映出来,或者充其量只能显示丑陋的布局。
当设备旋转时,系统会短暂隐藏键盘,然后执行键盘从旧方向到新方向的旋转动画。我认为动画块插入在两个通知UIKeyboardDidHideNotification和之间的某个位置UIKeyboardWillShowNotification。这些通知与UIKeyboardWillChangeFrameNotification. 本通知中的“框架”实际上是指的框架UIPeripheralHostView。
因此,当我获得输入视图的框架时,系统有机会在动画开始之前UIKeyboardDidHideNotification调整框架,从而在方向更改期间从短键盘平滑过渡到高键盘。UIPeripheralHostView
这在 iOS 5 中有效。但苹果将来可能会改变这种做法。
| 归档时间: |
|
| 查看次数: |
2573 次 |
| 最近记录: |