2015-04-10 22 views
11

Zaimplementowałem niestandardową klawiaturę. Działa dobrze na urządzeniu z systemem iOS 8.2.iOS 8.3 "UIView-Encapsulated-Layout-Width" w Custom Keyboard

Jednak gdy uruchamiam ten sam kod na urządzeniu z iOS 8.3 pojawia się następujący ostrzeżenia i wysokość klawiatury nie jest ustawiony prawidłowo:

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)]> 

nie mam pojęcia, co to znaczy. Proszę, pomóż mi to rozgryźć.

+0

Tak naprawdę widziałem tę wiadomość na urządzeniach 8.2. Z mojego doświadczenia wynika, że ​​twoje ograniczenie * zostało * uszanowane, a twoja wysokość została ustawiona prawidłowo. Czy nadal masz pełny dostęp na swoim urządzeniu 8.3? Czy masz inne widoki w 'UIInputView' z ograniczeniami autolayout? –

+0

@BenPious Niestety, wysokość nie została ustawiona poprawnie. – Neelesh

Odpowiedz

3
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)]> 

Mówi ci, że nie może spełnić wszystkich ograniczeń naraz.

Masz ograniczenie <NSAutoresizingMaskLayoutConstraint:0x15dd1da0 h=-&- v=-&- Keyboard:0x15db2b00.width == UIView:0x15da7b90.width - 320>, która dyktuje szerokość klawiaturze równa szerokości UIView w 0x15da7b90 minus 320 (sprawdzić debugger, który z nich jest to, że zazwyczaj wyglądają na debugera GUI jeśli wiem, co UIView s może być przyczyną problemu).

Innym ograniczeniem jest sprzeczne <NSLayoutConstraint:0x15dd2520 'UIView-Encapsulated-Layout-Width' H:[UIView:0x15da7b90(0)]>, który dyktuje szerokość UIView w 0x15da7b90 (sam) na wartość 0. To nie może spełniać zarówno ten jeden i jedna powyżej, tak więc przerywa tego.

Widzę, że twoje pierwsze ograniczenie jest jednym z typu NSAutoresizingMaskLayoutConstraint, więc możesz spróbować ustawić setTranslatesAutoresizingMaskIntoConstraints na wartość false w twoim widoku, co prawdopodobnie usunie pierwsze ograniczenie, usuwając w ten sposób konflikt.

Inne pomocne dokumentacja:

0

Też miałem te doświadczenia, kiedy zrobiłem Keyboard Extension.

To jest o, że inputView z UIInputViewController ma UIViewAutoresizingFlexible do parentView z inputView

I maskowanie jest tłumaczony na kapsułkach przymusu z nazwą

<NSLayoutConstraint:0x15dd2520 'UIView-Encapsulated-Layout-Width' H:[UIView:0x15da7b90(0)]> 

w dziennikach, istnieje inne przetłumaczone ograniczenie (z maskowania), więc myślę, że używasz go do łatwego zarządzania widokami. Moim zdaniem, musisz użyć NSConstraint (szerokość i wysokość ...)

Próbowałem usunąć maskowanie z inputView, ale dało mi to znacznie więcej problemów z zarządzaniem lokalizacjami i granicami.

Ponadto, spotkałem się z tą sytuacją, gdy uruchomiłem moją klawiaturę w starszej aplikacji (nieobsługiwanej na iPhone 6/6 +).

Za każdym razem, gdy obracam ekran, ograniczenie dotyczące wysokości jest blokowane za pomocą dzienników podobnych do twoich.

Jeśli masz inne pytanie lub moja odpowiedź nie jest wystarczająca, powiedz mi ponownie.

+0

Mam już ograniczenie szerokości i wysokości. – Neelesh

+0

A może dodasz widok automaskowania do inputView like collectionview? –

0

NSAutoresizingMaskLayoutConstrain oznacza to, że nie ustawiono prawidłowo wiązań układu automatycznego. Spróbuj ustawić go poprawnie, a problem zostanie rozwiązany: