iOS 8.3 'UIView-Encapsulated-Layout-Width' in Custom Keyboard

autolayout, custom-keyboard, ios8, objective-c

Solution

    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. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSAutoresizingMaskLayoutConstraint:0x15dd1da0 h=-&- v=-&- Keyboard:0x15db2b00.width == UIView:0x15da7b90.width - 320>",
    "<NSLayoutConstraint:0x15dd2520 'UIView-Encapsulated-Layout-Width' H:[UIView:0x15da7b90(0)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x15dd2520 'UIView-Encapsulated-Layout-Width' H:[UIView:0x15da7b90(0)]>

It is telling you that it can't satisfy all constraints at once.

You have a constraint `<NSAutoresizingMaskLayoutConstraint:0x15dd1da0 h=-&- v=-&- Keyboard:0x15db2b00.width == UIView:0x15da7b90.width - 320>`, which dictates the width of the keyboard equals the width of the `UIView` at `0x15da7b90` minus 320 (check the debugger which one this is, I usually look at the GUI debugger if I know what `UIView`s might be causing the problem).

The other conflicting constraint is `<NSLayoutConstraint:0x15dd2520 'UIView-Encapsulated-Layout-Width' H:[UIView:0x15da7b90(0)]>`, which dictates the width of the `UIView` at `0x15da7b90` (same one) to be 0. It cannot satisfy both this one and the one above, so it breaks this one.

I see that your first constraint is one of the type `NSAutoresizingMaskLayoutConstraint`, so you can try to set `setTranslatesAutoresizingMaskIntoConstraints` to false on your view, which will probably remove the first constraint, thus removing the conflict.

Other helpful documentation:

- Visual Format Language, the format that Xcode uses in the log, helps to know this language to debug them better.

- View Debugging in Xcode, helps to identify which views are where and at what address.

Problem

I have implemented a custom keyboard. It works fine on a device which runs iOS 8.2. However, when I run the same code on a device with iOS 8.3 I get the following warnings and the height of the keyboard is not set properly: ``` 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. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) ( "<NSAutoresizingMaskLayoutConstraint:0x15dd1da0 h=-&- v=-&- Keyboard:0x15db2b00.width == UIView:0x15da7b90.width - 320>", "<NSLayoutConstraint:0x15dd2520 'UIView-Encapsulated-Layout-Width' H:[UIView:0x15da7b90(0)]>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x15dd2520 'UIView-Encapsulated-Layout-Width' H:[UIView:0x15da7b90(0)]> ``` I have no idea what this means. Please help me figure it out.

Original source