Dies ist ein bekanntes Problem in der endgültigen Version, die sich in zwei Fällen zeigt:
- Wenn eine zweite modale Steuerung (paging oder Single) über eine bestehende Paging modal Controller präsentierenden
- Wenn ein Menü präsentiert über die Verwendung von Kraft-touch über einen Paging-modal-Controller
Dies wurde in dem Apple Developer Forum diskutiert, und die einzige Abhilfe, die ich gehört habe, ist eine, die ich benutze in meiner App. Leider gibt es keinen einfachen Code zum Teilen, der das Problem löst. Daher beschreibe ich den Ansatz (den ich für chaotisch, aber praktikabel halte).
Zuerst müssen Sie die Schnittstellen-Controller-Präsentationen verfolgen. Ich habe einen Rahmen dafür, aber Sie müssen vielleicht selbst rollen. Wenn ein untergeordneter Schnittstellencontroller seinen willActivate zweimal hintereinander aufruft (mit anderen Worten, ohne einen Aufruf an einen anderen untergeordneten Schnittstellencontroller), können Sie davon ausgehen, dass ein Modal darüber hinaus dargestellt/entlassen wurde.
Ihr präsentierender/übergeordneter Controller kann dann alle Kinder darüber informieren, dass der modale Menüfehler aufgetreten ist, und diese untergeordneten Controller können eine Ersatzstatusleiste mit ihrer eigenen Abbrechen/Schließen-Schaltfläche einblenden. Mit etwas Arbeit können Sie eine Pixel-perfekte Version der Standardstatusleiste mit identischem Verhalten neu erstellen.
Die letzte Wendung besteht darin, zu erkennen, wann Ihre Watch-App angehalten wurde, und wird dann fortgesetzt. In diesem Fall wird auch willActivate zweimal aufgerufen. Wenn Sie diese Situation nicht behandeln, blenden Sie die Ersatzstatusleiste ein und haben zwei gleichzeitig auf dem Bildschirm. Kein großartiges Szenario.
Die richtige Einstellung ist sehr schwierig, aber es funktioniert. Ich wünschte nur, ich hätte ein einfaches Codebeispiel, das Sie injizieren könnten.
Update: ich einige meiner Abhilfe Code zu GitHub geschoben:https://github.com/mikeswanson/JBInterfaceController
Nur ein Hinweis, dass dies in Watch OS 1.0.1 behoben wurde. –