2015-09-25 15 views
5

Mam podklasę UIWebView, aby dodać niestandardową funkcjonalność UIMenuController i działało całkiem dobrze aż do iOS 9. Nie jestem pewien, co się zmieniło, ale teraz mam do czynienia z sytuacją, w której Stukam w link, który powinien pokazywać menu, menu pojawia się na krótko, ale zostaje odrzucony (bez konieczności stukania ode mnie).UIMenuController zostaje zwolniony natychmiast po zaprezentowaniu

Ciężko mi się dowiedzieć, skąd pochodzi to zwolnienie. Obserwuję powiadomienie UIMenuControllerDidHideMenuNotification i to jest rzeczywiście wywoływane zaraz po zniknięciu menu, ale mam problem ze znalezieniem przyczyny zwolnienia.

Rozumiem, że istnieje wiele różnych problemów, które mogą się przyczaić, ale zastanawiam się, czy ktoś wcześniej doświadczył czegoś podobnego? Czy istnieje sposób, aby jakoś wyśledzić przyczynę zwolnienia?

enter image description here

+0

Może jeśli można pisać cały kod związany wyświetlanie/ukrywanie kontroler menu możemy pomóc więcej. – Istvan

+0

Myślę, że potrzebujesz pokazać kod? –

Odpowiedz

7

Miałem ten sam problem z iOS9, myślę, że dzieje się tak w wyniku wielu procesów. To nie jest idealne rozwiązanie, ale ... Po tym, jak staję się Pierwszym Detektywem, dodałem DELAY przed setMenuVisible: YES.

[self performSelector: @selector (showMenuController :) withObject: point afterDelay: 0.4];

+1

Pracował świetnie! Oddam nagrodę tak szybko, jak mi pozwoli. Dzięki – Lizza

0

Spróbuj dodając następującą metodę w kontroler widoku.

- (BOOL) canBecomeFirstResponder { 
    return YES; 
} 
+0

Powinienem był wyjaśnić, mam to tam. – Lizza

+0

Rozumiem. Czy też wywołujesz '-becomeFirstResponder' na kontrolerze widoku lub widoku? – Abhinav

+0

Tak, nazywam się FirstResponder przed wyświetleniem menuController. To pochodzi z widoku, a nie z VC. Dzięki za pomoc, przy okazji. – Lizza

0

Wystąpił podobny problem, próbując wyświetlić UIMenuController wewnątrz niestandardowego widoku. Wspomniana powyżej zmiana opóźnienia nie zadziałała.

Aby go naprawić musiałem dodać przesłonięcia do canBecomeFirstResponder więc wrócił prawda, zarówno mojego widoku niestandardowego a viewController został zawarty w.