我已将inputAccessoryView设置为XIB文件View的Referencing Outlet,其中包含可选键盘的按钮。这样可以在显示标准键盘时显示视图,并在隐藏标准键盘时隐藏。
当可选键盘在其中间区域中轻敲时,还需要隐藏它。这使得它在标准键盘仍然显示时被隐藏。为此,我还将另一个属性设置为相同XIB文件View的引用插座。
我正在隐藏可选键盘,将其框架的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];
这样可以隐藏可选键盘,但动画会在标准键盘的顶部而不是后面。您可以看到辅助键盘从上到下遍布窗口,直到它被隐藏。
有没有办法将它隐藏在标准键盘的“后面”,这样它的隐藏过程看起来更好?
我编辑了这个问题,因为隐藏现在正好用Chris的回答建议改变View的大小。
现在的问题是再次显示它:当我点击一个按钮时,视图应该再次显示相同的大小。在按钮点击事件中,我添加了以下代码:
[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)属于包含可选键盘的主视图的按钮尺寸很短,就好像它们已被压碎一样。
再次出现键盘的最佳方法是避免这个问题吗?
答案 0 :(得分: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;