UIAlertController的popover变形

Posted

技术标签:

【中文标题】UIAlertController的popover变形【英文标题】:UIAlertController's popover is deformed 【发布时间】:2015-03-22 14:01:47 【问题描述】:

我使用 UIToolbar 中的 UIAlertController 向用户展示了一个选项列表,其中包含首选样式的操作表。出现时,popover 的箭头被截断,它的角用两个不同的半径圆化:

据我所见,我用来展示它的代码直接来自文档:

UIAlertController *alertController =
    [UIAlertController alertControllerWithTitle:@""
                                        message:@""
                                 preferredStyle:UIAlertControllerStyleActionSheet];
NSArray *actions = @[
    [UIAlertAction actionWithTitle:@"Take a Photo"
                             style:UIAlertActionStyleDefault
                           handler:^(UIAlertAction *action) ],
    [UIAlertAction actionWithTitle:@"Choose from Album"
                             style:UIAlertActionStyleDefault
                           handler:^(UIAlertAction *action) ],
    [UIAlertAction actionWithTitle:@"Cancel"
                             style:UIAlertActionStyleCancel
                           handler:^(UIAlertAction *action) ]
];
for (UIAlertAction *action in actions) 
    [alertController addAction:action];


if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
    alertController.modalPresentationStyle = UIModalPresentationPopover;
    alertController.popoverPresentationController.barButtonItem = myBarButtonItem;

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

这是一个已知的错误吗?我在 ios 8.2 上试用了物理 iPad,在 iOS 8.1 和 8.2 上试用了模拟器。

【问题讨论】:

我遇到了这个问题。你有什么进展吗? 如果将@"" 替换为nil 会发生什么? 【参考方案1】:

尝试明确设置 allowedArrowDirections。

例如在 Swift 中:

actionSheet.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.Down;

【讨论】:

我实际上能够重现您的问题,并且它发生在我更改设备方向然后切换回原始方向之后。

以上是关于UIAlertController的popover变形的主要内容,如果未能解决你的问题,请参考以下文章

iOS Popover 或 ActionSheet 导致 UISegmentedControl 按钮变灰

iOS 8.0后使用UIAlertController

swift UIAlertController使用 UIAlertController的宽度 为270

从第一个 UIAlertController 打开第二个 UIAlertController

从 AppDelegate 到 PresentedViewController 的警报:“尝试在...上呈现 UIAlertController 已经在呈现 UIAlertController”

iOS核心笔记——UIAlertController