0

我已将 inputAccessoryView 设置为 XIB 文件视图的引用出口,其中包含用于可选键盘的按钮。这使得视图在标准键盘显示时显示,在标准键盘隐藏时隐藏。

当它在中间区域被点击时,也有必要隐藏可选键盘。这使它在标准键盘仍然显示时被隐藏。为此,我还将另一个属性设置为同一个 XIB 文件视图的引用插座。

我隐藏了可选键盘,将其框架的 origin.y 设置为一个高数字:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.30f];
viewOptionalKeyboard.frame = CGRectMake(viewOptionalKeyboard.frame.origin.x, 1200, viewOptionalKeyboard.frame.size.width, viewOptionalKeyboard.frame.size.height);
[UIView commitAnimations];
[UIView setAnimationDuration:0];

这使得可选键盘被隐藏,但动画在标准键盘的顶部而不是后面。您可以看到辅助键盘从上到下遍布整个窗口,直到它被隐藏。

有没有办法将它隐藏在标准键盘“后面”,使其隐藏过程看起来更好?

我编辑了这个问题,因为现在隐藏效果很好,克里斯的回答建议改变视图的大小。

现在的问题是再次显示它:当我点击一个按钮时,视图应该以相同的大小再次显示。在按钮点击事件中,我添加了以下代码:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.30f];
viewOptionalKeyboard.frame = CGRectMake(viewOptionalKeyboard.frame.origin.x, 500, viewOptionalKeyboard.frame.size.width, 74);
[UIView commitAnimations];
[UIView setAnimationDuration:0];

这是为了设置可选键盘的原始大小和原始 y 位置。它得到了原来的位置,但有两件事使它出错:

1)它显示在标准键盘上方/顶部,所以我们回到隐藏问题,但现在显示时。再次,您可以看到可选键盘从下方遍布整个窗口,直到它到达其原始位置。

2) 属于包含可选键盘的主视图的按钮尺寸变短,就好像它们被压碎了一样。

再次展示键盘以避免此问题的最佳方式是什么?

4

1 回答 1

1

为什么不在移动 y 点的同时降低视图的高度?

//For ease of reading    
CGRect frame = viewOptionalKeyboard.frame;

float x = frame.origin.x;
float y = frame.origin.y + frame.size.height;

viewOptionalKeyboard.frame = CGRectMake(x, y, frame.size.width, 0);

您只需要确保子视图具有灵活的高度自动调整大小掩码。

编辑:现在问题已更改为需要视图隐藏/显示,答案也已更改

您需要一个 ivar 或属性来跟踪原始帧高度:

@property (nonatomic, assign) float originalHeight;

然后在您的显示/隐藏方法中,您可以检查 viewOptionalKeyboard 框架是否可见,并采取相应措施:

CGRect frame = viewOptionalKeyboard.frame;

BOOL isVisible = frame.size.height!=0;

//Only need to set once
if (!originalHeight && isVisible){
    self.originalHeight = frame.size.height;
}

frame.origin.y += (isVisible) ? originalHeight : -originalHeight;
frame.size.height = (isVisible) ? 0 : originalHeight;

viewOptionalKeyboardFrame.frame = frame;
于 2012-10-18T17:19:24.850 回答