_UIButtonBarStackView: breaking constraint when becomeFirstResponder sent

匿名 (未验证) 提交于 2019-12-03 02:20:02

问题:

When jumping from one textfield to an other, get this:

translatesAutoresizingMaskIntoConstraints)  (     "<NSAutoresizingMaskLayoutConstraint:0x6040002806e0 UIKeyboardAssistantBar:0x7f986d40d020.height == 0>",     "<NSLayoutConstraint:0x60400008ece0 _UIButtonBarStackView:0x7f986d4041c0.top == UIKeyboardAssistantBar:0x7f986d40d020.top>",     "<NSLayoutConstraint:0x60400008ed30 UIKeyboardAssistantBar:0x7f986d40d020.bottom == _UIButtonBarStackView:0x7f986d4041c0.bottom>",     "<NSLayoutConstraint:0x60400009f220 _UIButtonBarButton:0x7f986d438480.height == UILayoutGuide:0x6040005b5ee0.height>",     "<NSLayoutConstraint:0x60400008e1a0 _UIButtonBarStackView:0x7f986d4041c0.bottom == UILayoutGuide:0x6040005b5ee0.bottom + 9>",     "<NSLayoutConstraint:0x60400008e100 UILayoutGuide:0x6040005b5ee0.top == _UIButtonBarStackView:0x7f986d4041c0.top + 10>" )  Will attempt to recover by breaking constraint  <NSLayoutConstraint:0x60400008e1a0 _UIButtonBarStackView:0x7f986d4041c0.bottom == UILayoutGuide:0x6040005b5ee0.bottom + 9>  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. 

Testing in simulator, do not get on device. Something wrong with shortcuts bar over keyboard1?

My super easy code triggers breaking constraint:

-(BOOL)textFieldShouldReturn:(UITextField*)textField {     [textField resignFirstResponder];      if (textField.tag > 0) {          UITextField *nextTextField = [self.view viewWithTag:textField.tag+1];         [nextTextField becomeFirstResponder];     }      return YES; } 

回答1:

This warning has annoyed me for quite some time. I discovered a two-line 'hack' by emptying leadingBarButtonGroups and trailingBarButtonGroups on the inputAssistantItem property on the UITextField:

inputAssistantItem.leadingBarButtonGroups = [] inputAssistantItem.trailingBarButtonGroups = [] 

This controls the UIKeyboardAssistantBar AutoLayout warnings when calling

becomeFirstResonder() 

More info here: https://developer.apple.com/documentation/uikit/uitextinputassistantitem

Specific note from Apple:

To hide shortcuts altogether, set the leadingBarButtonGroups and trailingBarButtonGroups properties to nil.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!