2015-03-27 1 views
10

Wenn ich einen modalen Bildschirm von einer Seite in der seitenbasierten Navigation anzeigen, verschiebt sich der gesamte Bildschirm und die Statusleiste ist nicht mehr sichtbar.
ist hier ein gif der Ausgabe:

enter image description hereApple Watch: Statusleiste nicht sichtbar nach dem Anzeigen eines modalen Bildschirms von Seiten basierte Navigation

I xCode 6.2 Version verwenden.
Dies geschah nicht in xCode 6.2 Beta 4 ..
Ich bin mir nicht sicher, ob dies ein Simulator-Problem ist oder das wird tatsächlich auch auf einem echten Gerät passieren.

Hat jemand das gleiche Problem? Gibt es eine Problemumgehung?

Ich habe einen Fehler zu Apple (20109240) gemeldet und es wurde als ein Duplikat von (19862945) markiert, und dieser ist noch offen.
Dank im Voraus

+1

Nur ein Hinweis, dass dies in Watch OS 1.0.1 behoben wurde. –

Antwort

7

Dies ist ein bekanntes Problem in der endgültigen Version, die sich in zwei Fällen zeigt:

  1. Wenn eine zweite modale Steuerung (paging oder Single) über eine bestehende Paging modal Controller präsentierenden
  2. 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

+0

Vielen Dank für die Lösung, es sollte in meinem Fall einfacher sein, weil ich nur einen Platz in der App habe, wo ich modalen Bildschirm von einer Seite drücken. Sie, mein Herr, verdienen meine Prämie! –

+0

Eine Frage: Haben Sie eine Lösung, wenn Sie das Menü (Statusleiste) einblenden und zwischen den Seiten blättern? Ich möchte nicht, dass das Menü zusammen mit der Seite blättert. –

+0

Leider gibt es keine Möglichkeit, eine Region zu erstellen, die nicht von Seite zu Seite scrollt. Daher hat jede Seite ihre eigene Ersatzstatusleiste. –

Verwandte Themen