Ich habe eine UIControl-Unterklasse, die das informelle UIAccessibilityContainer-Protokoll folgt: Es gibt NO an -isAccessibilityElement zurück, liefert die richtige AccessibilityElementCount und Elemente in den Accessoren.UIAccessoryElement, AccessoryFrame und Bildschirmrotation unterbrochen
Jedes UIAccessibilityElement, das zur Darstellung einer Zugänglichkeitsregion erstellt wird, wurde erfolgreich erstellt, und der Rahmen ist eine 1: 1-Zuordnung eines anderen CGRect, das ich zeichne.
Zum Beispiel zeichne ich in {94, 99}, {209, 350}} und der -accessibilityFrame auf dem UIAccessibilityElement wird auf denselben CGRect-Wert gesetzt.
Wenn Sie jedoch im Querformat (oder auf dem Kopf stehend) ausgerichtet sind, werden die Rahmen (nur für Eingabehilfen, Zeichnung funktioniert immer noch einwandfrei) falsch gedreht. Der obere linke Punkt relativ zum Rahmen ist immer die Ecke oben links von der Home-Schaltfläche.
Hier ist ein Screenshot aus dem Simulator:
Wie Sie sehen können, ist es im Querformat ist, und der Rahmen ist völlig unmöglich nicht, was es angibt.
Hier ist der Code, um die Erzeugung der Antriebselemente:
CGRect localRect = someCGRectVariable;
CGRect globalRect = CGRectOffset(localRect, CGRectGetMinX(self.accessibilityFrame), CGRectGetMinY(self.accessibilityFrame));
UIAccessibilityElement *accElem = [[UIAccessibilityElement alloc]initWithAccessibilityContainer:self];
accElem.isAccessibilityElement = YES;
accElem.accessibilityFrame = globalRect;
accElem.accessibilityHint = [NSString stringWithFormat:NSLocalizedString(@"xyz %@", nil), someName];
accElem.accessibilityTraits = UIAccessibilityTraitButton;
accElem.accessibilityLabel = nameValue;
Es sieht für mich wie die Drehung kaputt ist, aber ich kann nicht meinen Finger auf sie. Es ist erwähnenswert, dass es im Hochformat perfekt funktioniert.
Hm, das ist ein guter Punkt. Es heißt: "Der Rahmen des Accessibility-Elements, in Bildschirmkoordinaten." Ich muss es beim ersten Mal total vermisst haben. Leider scheint -convertRect: toWindow: [mit einem Null-Fenster, um Bildschirm-Rect zu erhalten] es scheint nicht zu ändern. –
Das -convertRect: fromView: was wird es tun. Vielen Dank für den Hinweis. –