2014-01-06 5 views
6

Ich habe ein Problem beim Verschieben des Voiceover-Cursors auf ein bestimmtes Element in viewDidAppear. Ich folgte Apple's guidelines auf ein bestimmtes Element zum Fokussieren, in diesem Fall eine Schaltfläche abtun, aber der Cursor endet an anderer StelleZugänglichkeit verschieben Voiceover-Cursor-Fokus auf ein bestimmtes Element

Hier oben ist mein Code:

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, 
           self.dismissButton); 
} 

Jede Hilfe, Ideen, würde auf jeden Fall geschätzt werden! ich danke dir sehr.

Antwort

8

Wenn ich mich richtig erinnere, war ich nicht in der Lage, mich zuverlässig auf die Elemente der ersten Ansicht zu konzentrieren, da sich VO im Allgemeinen auf den oberen Teil der Ansicht konzentrieren wird.

Der Code, den Sie tun, ist korrekt, aber an diesem Punkt löst das System ein eigenes Ereignis aus und überschreibt Ihr eigenes.

Sie können versuchen, eine Benachrichtigung mit einer Verzögerung zu veröffentlichen. Dies führt jedoch dazu, dass der Fokus beim Öffnen der Ansicht ein wenig springt.

Es ist nicht viel eine Antwort, aber das ist, wo ich im Moment bin. Ich werde dich aktualisieren, wenn ich einen Weg finde, es zu tun.

+0

Haben Sie einen besseren Weg gefunden? Ich mache auch das gleiche, aber es ist ein bisschen buggy. –

+0

Habe bisher noch keinen besseren Weg gefunden. Es ist eine Weile her, seit ich Accessibility angeschaut habe, ich werde die Antwort aktualisieren, wenn ich einen neuen Weg finde, dies zu tun. –

2

This answer kann hilfreich sein.

Grundsätzlich müssen Sie Ihre Elemente in einer Containeransicht umbrechen, wenn sie noch nicht in einem sind, und dann die angegebenen Methoden überschreiben.

Indem Sie Ihrem gewünschten Element ein Tag geben, das niedriger als die anderen Elemente ist, können Sie das Array so sortieren, dass es das erste Element im Array accessibilityElements ist, das von VoiceOver verwendet wird. Oder Sie können die Sortiermethode anpassen, um einen anderen Weg zu finden.

+0

Der Nachteil dieser Methode ist, dass sich auch die Reihenfolge der Elemente ändert. Die Leute können sich von Element zu Element bewegen, indem sie nach links oder rechts streichen und diese Methode der Sortierung nach dem Tag wird die Reihenfolge unlogisch verändern. Was Sie wirklich wollen, ist nur eine natürliche chronologische Reihenfolge, aber lassen Sie nur ein Element (nicht das erste) Fokus erhalten, wenn die Ansicht erscheint. Ich musste mich auch mit der Verzögerung von @ feras-arabiat begnügen, die alles andere als ideal ist. –

0

FYI: Ab iOS 11 sowohl UIAccessibilityScreenChangedNotification als auch UIAccessibilityLayoutChangedNotification zuverlässig Voice-Over-Elemente für mich konzentrieren.