Dies funktioniert nicht mehr auf iOS 7, weil die Hierarchie UISearchBar Ansicht geändert hat. Das UITextView ist jetzt eine Unteransicht der ersten Unteransicht (z. B. seine im searchBar.subviews[0].subviews
Array).
Eine zukunftssicherere Möglichkeit wäre, die gesamte Ansichtshierarchie rekursiv zu überprüfen und nach UITextInputTraits
Protokoll statt UITextField
zu suchen, da dies die Methode tatsächlich deklariert. Eine saubere Methode, dies zu tun, ist die Verwendung von Kategorien. Zuerst machen Sie eine Kategorie auf UISearchBar, die diese Methode fügt hinzu:
- (void) setKeyboardAppearence: (UIKeyboardAppearance) appearence {
[(id<UITextInputTraits>) [self firstSubviewConformingToProtocol: @protocol(UITextInputTraits)] setKeyboardAppearance: appearence];
}
Dann eine Kategorie auf UIView hinzufügen, die diese Methode fügt hinzu:
- (UIView *) firstSubviewConformingToProtocol: (Protocol *) pro {
for (UIView *sub in self.subviews)
if ([sub conformsToProtocol: pro])
return sub;
for (UIView *sub in self.subviews) {
UIView *ret = [sub firstSubviewConformingToProtocol: pro];
if (ret)
return ret;
}
return nil;
}
Sie nun über die Tastatur Auftritt auf der Suchleiste in der gleichen einstellen Art und Weise würden Sie ein Textfeld:
[searchBar setKeyboardAppearence: UIKeyboardAppearanceDark];
Sie haben die Tatsache übersehen, dass dies von einer UISearchBar und nicht von einem UITextField kommt. Der UIKeyboardAppearanceAlert hat einen transparenten Hintergrund, den ich in allen meinen Apps beibehalten möchte. Dies kann erreicht werden, wie Sie es in UITextFields gezeigt haben, jedoch enthält die UISearchBar auch ein Textfeld. Ich wollte wissen, ob es möglich ist, die Tastaturdarstellung für dieses Textfeld einzustellen. –
Mein schlechtes. In den Dokumenten scheint es keine Eigenschaft oder Methode zu geben, um die Tastaturtransparenz für die UISearchBar-Klasse festzulegen. Sie können nur den Tastaturtyp festlegen. – Justin