键盘顶部的UIToolbar:改变框架?

时间:2011-07-06 08:50:42

标签: iphone uitoolbar

我将UIToolbar设置为inputAccessoryView的{​​{1}}。这会在编辑时显示键盘顶部的工具栏。但是,我在旋转设备时遇到了一个问题:工具栏应该变得不那么高(32像素对44)。当我只更新工具栏的高度时,我在工具栏和键盘之间得到一个小空格:

image http://i54.tinypic.com/1z6bhut.png

因此我使用UITextView来更新原点,然后在从纵向旋转到横向时工作。但是,当向上旋转时,工具栏的像素太低而且与键盘重叠:

image http://i56.tinypic.com/2eey2cl.png

到那时,原点再次为(0,0)并且设置负值没有帮助。有关如何使其工作以使工具栏改变其大小而不会重叠的任何建议吗?

2 个答案:

答案 0 :(得分:1)

我通过调用[textView resignFirstResponder]中的-willRotateToInterfaceOrientation:duration:[textView becomeFirstResponder]中的-didRotateFromInterfaceOrientation:来修复此问题。系统似乎正确调整框架。

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    didShowKeyboard = [self.textView isFirstResponder];

    [self.textView resignFirstResponder];
}

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    CGRect toolbarFrame = [self.navigationController.toolbar bounds];
    self.keyboardToolbar.frame = toolbarFrame;

    if (didShowKeyboard)
        [self.textView becomeFirstResponder];
}

答案 1 :(得分:0)

您可以使用自动调整大小在旋转期间渲染控件,而不是计算原点和大小。

请参阅本教程http://www.bogotobogo.com/XcodeSDK-Chapter4.html

我认为这可以给你一个提示。