Ich versuche, die Voice-Over-Unterstützung in einer App zu verbessern. Ich habe einen Code%. Ich habe die Eigenschaft UISearchBar
auf showBookMarks
festgelegt. Und ich habe ein benutzerdefiniertes Bild mit:
Das Problem, das ich habe, ist, dass bei aktiviertem Voice Over das Lesezeichen-Symbol nicht aktiviert werden kann. Wenn ich Text einfüge, erscheint das "Löschen" -Symbol und es kann wie erwartet ausgewählt und aktiviert werden. Aber sobald der Text gelöscht ist und mein Lesezeichen-Symbol erscheint, kann es nicht ausgewählt werden. Egal, wo ich tippe, das Voice-Over-Rechteck umgibt immer die gesamte Suchleiste einschließlich der Symbole.
Ich habe versucht, die Eigenschaften YES
und accessibilityLabel
für% accessibilityTraits
für das Symbol festzulegen. Ich habe die Eigenschaft UIImage
von UIImage
auf isAccessibilityElement
gesetzt. Nichts scheint zu funktionieren.
Weiß jemand, welche Schritte erforderlich sind, um das Lesezeichen-Symbol in YES
zugänglich zu machen?
Hier ist der vollständige Code für die Suchleiste:
%Vor%Zusätzliche Informationen:
Ich sollte erwähnen, dass die Suchleiste mit einem UISearchBar
verwendet wird, das mit einem UITableViewController
verbunden ist. Die Suchleiste wird als UISearchDisplayController
der Tabellenansicht festgelegt.
Und all das geschieht im Code. Keine Storyboards oder XIBs sind beteiligt.
Nach ein paar Debugging habe ich die Antwort gefunden. Damit Voice Over ein benutzerdefiniertes Symbol für das Lesezeichen-Symbol eines UISearchBar
erkennt, muss das Symbol genau die richtige Größe haben.
Die verwendeten Bilder müssen 40x29px (80x58px für die Retina-Version) sein. Jede andere Größe und die Symbole werden von Voice Over nicht erkannt.
Meine Bilder waren 38x31px (und 68x62px).
Der Code, den ich in meiner ursprünglichen Frage gepostet habe, ist korrekt. Sobald die Bilder in der Größe aktualisiert wurden, fing alles an, wie erwartet zu funktionieren. Die einzige Änderung im Code war die Entfernung des Aufrufs zu setPositionAdjustment:forSearchBarIcon:
, die nicht mehr benötigt wurde.
Ich kann nicht abbilden, warum ein so kleiner Unterschied in der Symbolgröße den Unterschied zwischen Voice Over bei der Arbeit mit benutzerdefinierten Symbolen und nicht bei der Arbeit bedeuten würde. Aber da ist es. Ich hoffe, das hilft jemandem in der Zukunft.
Ich habe den Code in Ihrer Frage ausgeführt, und die Schaltfläche für die Lesezeichen scheint über VoiceOver verfügbar zu sein.
Könnte es etwas anderes geben, das Ihre Schnittstelle beeinträchtigt? Irgendwelche unsichtbaren Ansichten, die ihren Weg über die Lesezeichen-Schaltfläche finden könnten? Legen Sie eine benutzerdefinierte Schaltfläche zum Löschen fest? Irgendwelche anderen Details, die Sie zur Verfügung stellen können?
Es ist jedoch wahr, dass es nicht die accessibilityLabel
verwendet, die Sie übergeben; es verwendet nur "Button", der saugt. Ich würde sagen, es ist wahrscheinlich ein Fehler in UIKit - Sie sollten einen Fehler melden .
Tags und Links objective-c ios uisearchbar voiceover uiaccessibility