Подтвердить что ты не робот

| - (20) - [Ограничение UIInputSetContainerView прерывается, когда отображается строка состояния вызова

Мое приложение нарушает ограничение, когда я представляю строку состояния "Вызов", нажимая Command + Y в симуляторе. Это происходит только в первый раз, когда он представляет панель вызова. Все выглядит так, как должно было, но журнал печатает следующее:

Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. 
    Try this: 
        (1) look at each constraint and try to figure out which you don't expect; 
        (2) find the code that added the unwanted constraint or constraints and fix it. 
(
    "<NSLayoutConstraint:0x7fb4cb9b2b60 V:|-(20)-[UIInputSetContainerView:0x7fb4cb9b1190]   (Names: '|':UITextEffectsWindow:0x7fb4cba003f0 )>",
    "<NSLayoutConstraint:0x7fb4cb942100 'UIInputWindowController-top' V:|-(0)-[UIInputSetContainerView:0x7fb4cb9b1190]   (Names: '|':UITextEffectsWindow:0x7fb4cba003f0 )>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7fb4cb9b2b60 V:|-(20)-[UIInputSetContainerView:0x7fb4cb9b1190]   (Names: '|':UITextEffectsWindow:0x7fb4cba003f0 )>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.

Это стек вызовов, когда он разбивается на UIViewAlertForUnsatisfiableConstraints:

* thread #1: tid = 0x17582f, 0x0000000109bbb4c6 UIKit`UIViewAlertForUnsatisfiableConstraints, queue = 'com.apple.main-thread', stop reason = breakpoint 3.1
    frame #0: 0x0000000109bbb4c6 UIKit`UIViewAlertForUnsatisfiableConstraints
    frame #1: 0x0000000109bbb8b2 UIKit`-[UIView(UIConstraintBasedLayout_EngineDelegate) engine:willBreakConstraint:dueToMutuallyExclusiveConstraints:] + 113
    frame #2: 0x0000000107ea672b Foundation`-[NSISEngine handleUnsatisfiableRowWithHead:body:usingInfeasibilityHandlingBehavior:mutuallyExclusiveConstraints:] + 489
    frame #3: 0x0000000107d07801 Foundation`-[NSISEngine fixUpValueRestrictionViolationsWithInfeasibilityHandlingBehavior:] + 613
    frame #4: 0x0000000107d07537 Foundation`-[NSISEngine optimize] + 134
    frame #5: 0x0000000107d07da4 Foundation`-[NSISEngine withBehaviors:performModifications:] + 245
    frame #6: 0x0000000109bb5a4b UIKit`-[UIView(AdditionalLayoutSupport) _withAutomaticEngineOptimizationDisabledIfEngineExists:] + 58
    frame #7: 0x0000000109bb658e UIKit`-[UIView(AdditionalLayoutSupport) updateConstraintsIfNeeded] + 254
    frame #8: 0x0000000109ba6c46 UIKit`-[UIWindow(UIConstraintBasedLayout) updateConstraintsIfNeeded] + 108
    frame #9: 0x0000000109bb72a3 UIKit`-[UIView(AdditionalLayoutSupport) _updateConstraintsAtEngineLevelIfNeeded] + 272
    frame #10: 0x00000001093979b3 UIKit`-[UIView(Hierarchy) layoutBelowIfNeeded] + 845
    frame #11: 0x000000010936eb8b UIKit`-[UIWindow handleStatusBarChangeFromHeight:toHeight:] + 1284
    frame #12: 0x0000000109703b5b UIKit`-[UITextEffectsWindow handleStatusBarChangeFromHeight:toHeight:] + 100
  * frame #13: 0x00000001093726a7 UIKit`+[UIWindow _noteStatusBarHeightChanged:oldHeight:forAutolayoutRootViewsOnly:] + 364
    frame #14: 0x0000000109303a52 UIKit`-[UIApplication statusBar:willAnimateFromHeight:toHeight:duration:animation:] + 265
    frame #15: 0x00000001099115bb UIKit`-[UIStatusBar _requestStyleAttributes:animationParameters:forced:] + 885
    frame #16: 0x0000000109910fbf UIKit`-[UIStatusBar requestStyle:animationParameters:forced:] + 437
    frame #17: 0x0000000109910d0d UIKit`-[UIStatusBar requestStyle:animated:forced:] + 90
    frame #18: 0x00000001099160a6 UIKit`-[UIStatusBar statusBarServer:didReceiveStyleOverrides:] + 56
    frame #19: 0x0000000109904b05 UIKit`_UIStatusBarReceivedStyleOverrides + 45
    frame #20: 0x0000000109909058 UIKit`_XReceivedStyleOverrides + 33
    frame #21: 0x0000000110d67fa8 AppSupport`migHelperRecievePortCallout + 208
    frame #22: 0x000000010896c289 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 41
    frame #23: 0x000000010896c1f9 CoreFoundation`__CFRunLoopDoSource1 + 473
    frame #24: 0x0000000108961970 CoreFoundation`__CFRunLoopRun + 2272
    frame #25: 0x0000000108960e08 CoreFoundation`CFRunLoopRunSpecific + 488
    frame #26: 0x000000010e360ad2 GraphicsServices`GSEventRunModal + 161
    frame #27: 0x00000001092f330d UIKit`UIApplicationMain + 171
    frame #28: 0x00000001074e252f AppName`main(argc=1, argv=0x00007fff5872e688) + 111 at main.m:16
    frame #29: 0x000000010aa6b92d libdyld.dylib`start + 1
    frame #30: 0x000000010aa6b92d libdyld.dylib`start + 1

У вас есть идея, почему ограничение прерывается? Я не добавил никаких ограничений для UIInputSetContainerView, UITextEffectsWindow или UIInputWindowController.

РЕДАКТИРОВАТЬ: Мой вопрос был отмечен как возможный дубликат, но я НЕ НЕ рекомендую или соглашаюсь с ответом, который представлен в другом вопросе. Очень рискованно удалять собственные ограничения Apple, просто чтобы избавиться от этого предупреждения. Я бы не рекомендовал это делать. Вот почему я также считаю неправильный флаг неправильным (этот вопрос задан раньше и уже имеет ответ.), Потому что ответ не тот, который я ищу.

4b9b3361

Ответ 1

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

  • Создать новый проект с одним представлением
  • Работа на симуляторе iPhone
  • нажмите Cmd-Y, чтобы переключить строку состояния

Вы увидите разрыв ограничения.

Радар - это способ пойти, я бы сказал.

Ответ 2

Это явно ошибка Apple. Я предполагаю, что у них есть странное ограничение, которое содержит высоту статусных баров в 20 пикселей, но сломается, когда полоса вызовов растет. Это не нарушает или не влияет на приложение, поэтому теперь его можно игнорировать. Но Apple Radar должен быть заполнен.