【发布时间】:2018-10-20 10:56:30
【问题描述】:
我的导航控制器上有两个UIBarButtonItems:
segmentControl = UISegmentedControl(items: ["Up", "Down"])
infoItem = UIBarButtonItem(image: infoImage,
style: .plain,
target: self,
action: #selector(infoAction))
navigationItem.rightBarButtonItems = [infoItem, UIBarButtonItem(customView: segmentControl)]
点击infoItem时我会这样做:
@objc func infoAction()
{
let popoverContentController = InfoViewController()
popoverContentController.preferredContentSize = CGSize(width: 300, height: 300)
popoverContentController.modalPresentationStyle = .popover
popoverContentController.popoverPresentationController?.delegate = self
popoverContentController.popoverPresentationController?.passthroughViews = nil
self.present(popoverContentController, animated: true, completion: nil)
}
然后调用UIPopoverPresentationControllerDelegate 函数:
func prepareForPopoverPresentation(_ popoverPresentationController: UIPopoverPresentationController)
{
popoverPresentationController.permittedArrowDirections = .any
popoverPresentationController.barButtonItem = infoItem
popoverPresentationController.passthroughViews = nil
}
func adaptivePresentationStyle(for controller: UIPresentationController,
traitCollection: UITraitCollection) -> UIModalPresentationStyle
{
return .none
}
即使我将passthroughViews 设置为nil 两次,UISegmentedControl 也不会脱色,并且在弹出框出现在屏幕上时仍然可以点击。
如果显示任何其他弹出框,UISegmentedControl 的行为正常:已脱色且不可点击。
我在这里错过了什么?
【问题讨论】:
标签: ios swift uipopovercontroller uipopoverpresentationcontroller