当用户点击弹出窗口外,解雇是动画的。有没有办法将解雇动画设置为NO?我在谷歌上广泛搜索和搜索。
UIPopover状态的文档:
显示时,弹出窗口外的水龙头会导致弹出窗口 被自动解雇。允许用户与之交互 指定视图而不是解除弹出窗口,可以指定一个或 有关passthroughViews属性的更多视图。在弹出窗口内轻敲 窗口不会自动导致弹出窗口被解除。您的 查看和查看控制器代码必须处理内部的操作和事件 明确地使用popover并将dismissPopoverAnimated:方法调用为 需要的。
我已使用dismissPopoverAnimated:
实施了NO
方法,并且在我调用该方法时适用于所有情况。
问题是当用户点击popover外部以解雇时,dismissPopoverAnimated:
未被调用。
弹出窗口外的点击导致弹出窗口 被自动解雇。
这种解雇是动画的。似乎没有办法控制解雇。我正在使用popover为绘图应用程序呈现颜色选择器。在弹出窗口完成动画制作之前,不会注册要绘制的点击。这会产生明显的延迟,因为您无法立即绘制但必须等待动画完成。
我认为- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
可以正常工作,但AFAIK无法在此方法中设置动画属性。只需返回是或否。
我可以实现一种不同的方法来将动画设置为NO吗?
答案 0 :(得分:8)
在呈现UIPopoverController的视图控制器中,符合UIPopoverControllerDelegate协议并实现以下委托方法。我刚测试了这个,它确实没有动画就解雇了弹出窗口。
- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
{
[self.myPopoverController dismissPopoverAnimated:NO];
return YES;
}
只需确保已将弹出控制器的委托设置为实现此目的的视图控制器。
答案 1 :(得分:0)
默认情况下,在iOS 9+上modalPresentationStyle = .Popover
,您可以实现此方法以防止取消点击
public func popoverPresentationControllerShouldDismissPopover(_ popoverPresentationController: UIPopoverPresentationController) -> Bool {
return false
}
答案 2 :(得分:0)
快捷键5
当我们通过点击外部关闭popOver时,这将禁用动画。
extension YourViewController: UIPopoverPresentationControllerDelegate {
func presentationControllerShouldDismiss(_ presentationController: UIPresentationController) -> Bool {
// to prevent animation, we need to dismiss it manuallly with animated: false
presentationController.presentingViewController.dismiss(animated: false, completion: nil)
return true
}
}