3
UIAlertController *alert =
[UIAlertController alertControllerWithTitle:@"What would you like to do?"
                                    message:@""
                             preferredStyle:UIAlertControllerStyleActionSheet];

[alert addAction:...] //left out for brevity of post

UIPopoverPresentationController *pop = [alert popoverPresentationController];
pop.sourceView = self.view;
pop.sourceRect = self.view.frame;
pop.permittedArrowDirections = UIPopoverArrowDirectionAny;

[self presentViewController:alert
                   animated:true
                 completion:^{
                 }];

中列出的 UIView 上的 UIConstraintBasedLayoutDebugging 类别中的方法也可能会有所帮助。2014-10-22 13:33:17.966 项目 [2995:40175] 无法同时满足约束。以下列表中的至少一个约束可能是您不想要的。试试这个:(1)查看每个约束并尝试找出您不期望的;(2) 找到添加了一个或多个不需要的约束的代码并修复它。(注意:如果您看到不理解的 NSAutoresizingMaskLayoutConstraints,请参阅 UIView 属性 translatesAutoresizingMaskIntoConstraints 的文档) ( "=44)]>", "", "", "", "" )

将尝试通过打破约束来恢复 =44)]>

这是什么意思?>=44 是什么?

我只是想在 iPad、iOS8 上展示一个 UIAlertController

4

2 回答 2

1

我想简单地发表评论,但愚蠢的声誉系统不允许我发表评论。

简单地在 UIViewAlertForUnsatisfiableConstraints 上设置断点并没有帮助,因为是 UIAlertController 导致了问题,而不是用户的问题。这是 Apple 的错误,应该报告。我也明白了。在 iPhone 大小的设备上工作正常,但在 iPad 大小的设备上却像上面一样失败。

我只是通过将整个源视图的边界指定为 sourceRect 来让我的工作,而是在源视图中手势的位置制作了一个小矩形:

CGPoint     loc = [ges locationInView:self.view];
CGRect      popBox = CGRectMake(loc.x - 10, loc.y - 10, 20, 20);

popoverPresentationController.sourceRect = popBox;
于 2018-01-24T05:01:45.520 回答
0

您需要添加一个符号断点。Apple 提供了有关如何执行此操作的出色指南。

打开断点导航器 cmd+7

点击左下角的添加按钮

选择添加符号断点...

上面写着 Symbol 只需输入 UIViewAlertForUnsatisfiableConstraints 你也可以像对待任何其他断点一样对待它,打开和关闭它,添加操作或记录消息。

于 2015-02-27T07:51:51.340 回答