der beste Weg, dynamische Zugänglichkeit Etiketten zu handhaben ist, um die Eigenschaftsfunktionen auf den Ansichten außer Kraft zu setzen, die fokussiert werden (EX: auf einem UIButton). Dies ermöglicht ZWEI Dinge. A: Es ist viel einfacher zu warten, als die Eigenschaft überall dort einzustellen, wo sie sich ändern kann. B: Sie können Informationen protokollieren und sehen, wann das System diese Informationen anfordert, damit Sie besser verstehen, WARUM die Dinge passieren. Auch wenn es Ihr Problem nicht direkt behebt, ist es von Natur aus wertvoll zu sehen, WENN das System Ihren Wert anfordert und diese Daten protokolliert.
dies tun in Objective C
@implementation YourUIButton
-(NSString*)accessibilityLabel {
if(someCondition) {
return @"a";
} else {
return @"b";
}
}
@end
In Swift
public class YourUIButton : UIButton
override public var accessibilityLabel: String? {
get {
if (someCondition) {
return "a"
} else {
return "b"
}
}
set {
NSException.raise(NSException("AccessibilityLabelException", "You should not set this accessibility label.", blah))
}
}
}
könnten Sie auch diese Logik Anwendung zu debuggen und erlauben Einstellung und so weiter.
Hier gibt es viele mögliche Probleme. Race conditions, welche View tatsächlich den Fokus erhält, gibt es eine Parent-Child-Beziehung usw. Das Überschreiben der Property und das Hinzufügen von Logging-Anweisungen zum obigen Code wird Ihnen helfen zu verstehen, welche View das Accessibility-Label wann angefordert bekommt. Super wertvolle Information!
Ihre Frage ist nicht klar, versuchen Sie, Ihren Code & was Sie versuchten –
Ihre Frage ist nicht klar –
Unklarheit in dem, was gefragt wird, ist aufgrund der Ignoranz des Lesers. Das ist eine gute Frage, mit einer wertvollen Antwort. – ChrisCM