Objective c 如何在Objective C中从标准键盘后面以动画方式隐藏/显示可选键盘
我已经设置了一个inputAccessoryView作为XIB文件视图的引用出口,该视图有一个可选键盘的按钮。这使得视图在显示标准键盘时显示,在隐藏标准键盘时隐藏 当可选键盘在中间区域被点击时,还需要隐藏它。这使得它在标准键盘仍显示时被隐藏。为此,我还将另一个属性设置为引用同一个XIB文件视图的出口 我正在隐藏可选键盘,将其帧的原点.y设置为一个高数字:Objective c 如何在Objective C中从标准键盘后面以动画方式隐藏/显示可选键盘,objective-c,keyboard,show-hide,optional,Objective C,Keyboard,Show Hide,Optional,我已经设置了一个inputAccessoryView作为XIB文件视图的引用出口,该视图有一个可选键盘的按钮。这使得视图在显示标准键盘时显示,在隐藏标准键盘时隐藏 当可选键盘在中间区域被点击时,还需要隐藏它。这使得它在标准键盘仍显示时被隐藏。为此,我还将另一个属性设置为引用同一个XIB文件视图的出口 我正在隐藏可选键盘,将其帧的原点.y设置为一个高数字: [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration
[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的回答建议更改视图的大小
现在的问题是再次显示它:当我点击一个按钮时,视图应该以相同的大小再次显示。在按钮点击事件中,我添加了以下代码:
[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) 属于包含可选键盘的主视图的按钮大小很短,就像被压碎了一样
再次显示键盘以避免此问题的最佳方法是什么?为什么不在移动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;
克里斯,我不得不编辑我的问题和标题,因为隐藏效果很好,但表演不好。不知道你的意思?如果您需要重新显示相同的视图,您可以反向执行相同的动画,即将y设置为原始y,将高度设置为原始高度,您可以查看问题版本,通过隐藏可选键盘,仅将其设置为离应重新出现的位置较近的距离,就可以获得已解决第一个问题的理想答案。现在唯一的问题是,我试图将可选键盘的按钮设置为其原始大小,但由于某种原因,高度没有改变。当可选键盘返回时,它们会被压碎。最后一次编辑可能不是必需的,因为同样的事情在另一种方式下(假设原始大小.y是一个常数,在本例中为74)在我自己的问题示例中完成。我还解决了按钮的问题,我在调整大小时犯了一个愚蠢的错误,但你所要做的就是调整它们的大小。