弹出框在 iPhone 上不起作用
Popover Doesn't Work on iPhone
我在我的应用程序中实现了一个 Popover
并对其进行了测试。它在 iPad 上运行良好,但当我在 iPhone 上测试它时,它不会显示 Popover
,而是显示完整的故事板。请帮我。
这是我的代码:
@IBAction func MenuIsClick(sender: AnyObject) {
var moveToNextVC:MenuViewController
moveToNextVC = self.storyboard?.instantiateViewControllerWithIdentifier("MenuViewController") as! MenuViewController
moveToNextVC.modalPresentationStyle = .Popover
moveToNextVC.preferredContentSize = CGSizeMake(200, 200)
if let popoverController = moveToNextVC.popoverPresentationController {
popoverController.sourceView = sender as! UIView
popoverController.sourceRect = CGRect(x: 0, y: 0, width: 85, height: 30)
popoverController.permittedArrowDirections = .Any
popoverController.delegate = self
}
presentViewController(moveToNextVC, animated: true, completion: nil)
}
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController!, traitCollection: UITraitCollection!) -> UIModalPresentationStyle {
return .None
}
编辑: 由于 Popover 在 iPhone 上不起作用,但是当引用此 EthanStrider/iOS-Projects 时它会正常工作。怎么样?
UIPopoverController's 仅适用于 iPad。
Popover controllers are for use exclusively on iPad devices.
Attempting to create one on other devices results in an exception.
虽然使用iOS 8+,它不再崩溃,它将作为全屏模态呈现执行..
UIPopoverController 只能在 iPad 设备上使用。你可以参考Apple docs来验证。
如果你真的想要在 iPhone 上弹出一个弹出窗口,你可以使用像 WYPopoverController.
这样的第三方控件
您可以在其他地方使用此控件。
对我来说,问题是此委托方法中的 .none
参数。当我在它前面添加 UIModalPresentationStyle
- 它开始工作了!
// Override the iPhone behavior that presents a popover as fullscreen
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return UIModalPresentationStyle.none
}
原因是我在项目的枚举中定义了另一个 .none
案例,其中包含另一个基础 Int 值(这当然是不好的做法,所以请一开始就避免这样做)。
我在我的应用程序中实现了一个 Popover
并对其进行了测试。它在 iPad 上运行良好,但当我在 iPhone 上测试它时,它不会显示 Popover
,而是显示完整的故事板。请帮我。
这是我的代码:
@IBAction func MenuIsClick(sender: AnyObject) {
var moveToNextVC:MenuViewController
moveToNextVC = self.storyboard?.instantiateViewControllerWithIdentifier("MenuViewController") as! MenuViewController
moveToNextVC.modalPresentationStyle = .Popover
moveToNextVC.preferredContentSize = CGSizeMake(200, 200)
if let popoverController = moveToNextVC.popoverPresentationController {
popoverController.sourceView = sender as! UIView
popoverController.sourceRect = CGRect(x: 0, y: 0, width: 85, height: 30)
popoverController.permittedArrowDirections = .Any
popoverController.delegate = self
}
presentViewController(moveToNextVC, animated: true, completion: nil)
}
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController!, traitCollection: UITraitCollection!) -> UIModalPresentationStyle {
return .None
}
编辑: 由于 Popover 在 iPhone 上不起作用,但是当引用此 EthanStrider/iOS-Projects 时它会正常工作。怎么样?
UIPopoverController's 仅适用于 iPad。
Popover controllers are for use exclusively on iPad devices. Attempting to create one on other devices results in an exception.
虽然使用iOS 8+,它不再崩溃,它将作为全屏模态呈现执行..
UIPopoverController 只能在 iPad 设备上使用。你可以参考Apple docs来验证。
如果你真的想要在 iPhone 上弹出一个弹出窗口,你可以使用像 WYPopoverController.
这样的第三方控件您可以在其他地方使用此控件。
对我来说,问题是此委托方法中的 .none
参数。当我在它前面添加 UIModalPresentationStyle
- 它开始工作了!
// Override the iPhone behavior that presents a popover as fullscreen
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return UIModalPresentationStyle.none
}
原因是我在项目的枚举中定义了另一个 .none
案例,其中包含另一个基础 Int 值(这当然是不好的做法,所以请一开始就避免这样做)。