【发布时间】:2013-05-29 12:51:11
【问题描述】:
背景:
我需要从具有搜索字段的图像视图(矩形而不是 barbutton)中显示弹出框。弹出框需要从 UIModalPresentationFormSheet 呈现。这已成功实现
问题:
我面临的问题(在横向模式下)是当显示键盘时,模式表单向上移动,并随之移动我的弹出框框架。因此弹出框保持在其原始位置(在显示键盘之前)并且呈现的矩形向上移动。
我应用的解决方案是从更改的矩形中代表(using presentPopoverFromRect) 中的弹出框-(void)didShowKeyBoard:(NSNotification*) notif 并在-(void)didhideKeyBoard:(NSNotification*) notif 中执行相同的操作。这工作正常,但过渡非常快速和有弹性。
那么,如何才能实现平稳过渡呢?
我的尝试
我试过了:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDuration:5.0f];
[_statePopover presentPopoverFromRect:stateHandler.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:NO];
[UIView commitAnimations];
但是没有用。
有人可以指导我正确的方法吗?
非常感谢任何帮助。
【问题讨论】:
-
您是否尝试根据方向更改弹出框的坐标?
-
@Radu 在肖像中我没有遇到上述问题。在风景中,正如我在问题中所说,我从已经改变其位置的矩形重新呈现它。然后弹出框正确地假定移动矩形的新位置。我面临的问题是它的过渡。它不平滑。
-
我在其他地方也遇到过这种问题尝试将所有转换代码放在 UIView 动画中 - 我将这个技巧用于某些键盘和表格动画,也许它会为你工作
-
也许这会帮助stackoverflow.com/questions/5874146/…。您可以尝试关闭然后重新显示弹出框
-
同样的快速和有弹性的过渡。它不流畅。实际上,当我关闭键盘时,我已经让它变得流畅了。通过调度使用延迟,如下所示: dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_USEC), dispatch_get_current_queue(), ^{ [_statePopover presentPopoverFromRect:statehandler.frame inView:self.view allowedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; });显示键盘时,同样的事情不起作用。
标签: ios objective-c ipad uipopovercontroller popover