UIViewAlertForUnsatisfiableConstraints при представлении всплывающего контроллера на iPad с iOS8

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:^{
                 }];

Также могут быть полезны методы из категории UIConstraintBasedLayoutDebugging в UIView, перечисленные в . 2014-10-22 13:33:17.966 Project[2995:40175] Невозможно одновременно удовлетворить ограничения. Вероятно, по крайней мере одно из ограничений в следующем списке вам не нужно. Попробуйте следующее: (1) посмотрите на каждое ограничение и попытайтесь выяснить, чего вы не ожидаете; (2) найти код, который добавил нежелательное ограничение или ограничения, и исправить его. (Примечание. Если вы видите NSAutoresizingMaskLayoutConstraints, которые не понимаете, обратитесь к документации по свойству UIView translatesAutoresizingMaskIntoConstraints) ( "=44)]>", "", "", "", "" )

Будет предпринята попытка восстановления путем нарушения ограничения =44)]>

Что это значит? Что такое >=44?

Я просто пытаюсь представить UIAlertController на iPad, iOS8.


person quantumpotato    schedule 22.10.2014    source источник


Ответы (2)


Я хотел бы просто прокомментировать, но дурацкая система репутации пока не позволяет.

Простая установка точки останова на 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;
person Steve Mills    schedule 24.01.2018

Вы захотите добавить символическую точку останова. Apple предоставляет отличное руководство о том, как это сделать. это.

Откройте навигатор точек останова cmd+7

Нажмите кнопку «Добавить» в левом нижнем углу

Выберите Добавить символическую точку останова...

Там, где написано «Символ», просто введите UIViewAlertForUnsatisfiableConstraints. Вы также можете рассматривать его как любую другую точку останова, включая и выключая ее, добавляя действия или регистрируя сообщения.

person Pradeep Kachhawaha    schedule 27.02.2015