Я хочу всегда представлять ViewController
во всех устройствах и всех ориентациях. Я попытался это сделать, приняв UIPopoverPresentationControllerDelegate
и установив sourceView
и sourceRect
.UIModalPresentoverPopover для iPhone 6 Plus в ландшафте не отображается popover
Это хорошо работает для всех устройств и ориентации, за исключением iPhone 6 Plus в ландшафте. В этом случае контроллер просмотра соскальзывает со дна экрана в виде листа. Как я могу предотвратить это, чтобы он всегда появлялся в popover?
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let popoverPresentationController = segue.destinationViewController.popoverPresentationController
popoverPresentationController?.delegate = self
popoverPresentationController?.sourceView = self.titleLabel!.superview
popoverPresentationController?.sourceRect = self.titleLabel!.frame }
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
return UIModalPresentationStyle.None }
Все устройства находятся под прошивкой 8.2 или выше
Хороший звонок! Я забыл, что метод делегата изменился на 8.3. –
@PetahChristian Спасибо! Да, это было довольно тихое изменение и, похоже, не было документировано иначе, чем в API diff. – Joshua
@ Joshua YES! Я реализовал - (UIModalPresentationStyle) adaptivePresentationStyleForPresentationController: (UIPresentationController *) контроллер { return UIModalPresentationNone; } но новый API решает мою проблему, спасибо, сэр! – Loegic