UITextField自定义键盘和对设备方向的响应

时间:2011-05-12 19:51:30

标签: ios keyboard uitextfield

我正在尝试将自定义键盘附加到UITextField,键盘将响应不同的视图方向(横向,纵向等)。简而言之,问题是当键盘确实显示时,当我旋转设备时响应视图方向时,键盘的尺寸都搞砸了,我不太确定如何设置键盘框架/边界正确。希望有人能帮到我!

这是我的设计:

键盘是从UIViewController的子类(来自xib)构建的。有两种视图:landscapeKeyboardView和portraitKeyboardView。

键盘通过属性“inputView”附加到UITextField。

键盘视图的旋转在函数中完成:

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientationduration:(NSTimeInterval)duration
{
    if ((toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)) 
    {
        self.view = self.landscapeKeyboardView;
    }else if((toInterfaceOrientation == UIInterfaceOrientationPortrait) || (toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown))
    {
        self.view = self.portraitKeyboardView;
    }
}

旋转确实发生,但视图尺寸在旋转后全部搞砸了。我还尝试手动设置self.view或landscapeKeyboardView或portraitKeyboardView视图的框架或边界,但它们似乎都没有解决问题。

有谁知道如何解决这个问题?或者是否有更好的自定义键盘设计模式?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可能需要翻译CGRect以进行轮换。 UIView有许多用于转换rects和points的实例方法。它解释了另一个视图框架之外的视图(例如,找出键盘矩形的UIPopover下方有多远)以及旋转。 c onvertRect:fromView:只是一个例子,但它们都以'convert'开头。