为什么 popover 在 iPhone 上没有箭头?

Why popover does not have an arrow on iPhone?

我在按下按钮时显示弹出窗口。 Popover 将其箭头指向按下的按钮:

UIViewController * controller = [self.storyboard instantiateViewControllerWithIdentifier: @"popover view"];
controller.modalPresentationStyle = UIModalPresentationPopover;
controller.popoverPresentationController.sourceView = button.imageView;

[self presentViewController: controller
                   animated: YES
                 completion: nil];

这是在故事板中定义弹出视图控制器的方式:

问题是,在 iPhone 上,此弹出窗口是全屏绘制的,而在 iPad 和 Mac 上,它是用指向按钮的箭头绘制的。我希望它总是有一个箭头。

我看到 iPhone 上的弹出窗口可以有箭头,但无法获取。我错过了什么?为什么 iPhone 弹出窗口全屏绘制且没有箭头?

您需要实施 UIPopoverPresentationControllerDelegateadaptivePresentationStyleForPresentationController:traitCollection:popoverPresentationController delegate

的 return UIModalPresentationNone
- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller
                                                               traitCollection:(UITraitCollection *)traitCollection
{
    return UIModalPresentationNone;
}