Ich versuche einen Fehler zu beheben, der UIView hitTest betrifft: withEvent: wird in meiner Ansicht aufgerufen, wenn die Berührungen auf dem UIKeyboard sind, aber erst nachdem die App im Hintergrund war.
Es geschah in meiner App mit einer komplexen Ansichtshierarchie, also habe ich es in einer App mit nur zwei Ansichten reproduziert:
Das Verhalten ist wie folgt:
Ich sehe das auf einem iOS 5 iPad 2. Nur auf dem Gerät, niemals im Simulator. Irgendeine Idee, warum hitTesting auf diese Weise durcheinander gebracht werden könnte? Danke.
Das oben beschriebene Problem scheint dadurch zu entstehen, dass das UI-Fenster der Tastatur in einem schlechten Zustand verharrt. Sicherzustellen, dass die versteckte Eigenschaft des Tastaturfensters auf YES gesetzt wird (selbst wenn es bereits JA ist) behebt das Problem für mich. Dies kann in Ihrer UIApplicationDelegate-Klasse erfolgen:
%Vor%Der Klassenname des Tastaturfensters, zumindest in iOS 5 mit einer Standard-US-Tastatur, ist UITextEffectsWindow. Wie üblich ist es keine gute Idee, sich auf undokumentierte Klassennamen zu verlassen, aber im Falle eines OS-spezifischen Fehlers funktioniert es für meine Zwecke. Es könnte eine beliebige Anzahl von Fenstern, einschließlich der Root-Anwendungsfenster, Tastatur, Warnungen und andere Fenster, die Ihre App oder anderen Frameworks hinzugefügt haben, so seien Sie nicht zu unspezifischen.
Ich habe das gleiche Problem, und meine Arbeit um zu UIKeyboardDidShowNotification und UIKeyboardDidHideNotification, berechnen Sie die Tastaturhöhe mit UIKeyboardFrameEndUserInfoKey, dann in meinem hitTest zu hören: withevent: Methode, die ich sehen würde, ob der Treffer auf der Tastatur „Zone“ war oder nicht.
Tags und Links ios ios5 first-responder hittest