. UITextView artık ilk alt görüntünün bir alt görünümüdür (ör., searchBar.subviews[0].subviews
dizisinde onun).
Bunu yapmanın daha sonraki bir yolu, tüm görünüm hiyerarşisini yinelemeli olarak kontrol etmek ve UITextField
yerine UITextInputTraits
protokolünü kontrol etmek olacaktır, çünkü bu aslında yöntemi açıklar. Bunu yapmanın temiz bir yolu kategorileri kullanmaktır.
- (void) setKeyboardAppearence: (UIKeyboardAppearance) appearence {
[(id<UITextInputTraits>) [self firstSubviewConformingToProtocol: @protocol(UITextInputTraits)] setKeyboardAppearance: appearence];
}
Sonra UIView bir kategori eklemek bu yöntemi ekler:
- (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;
}
Artık aynı arama çubuğunda klavye görünümünü ayarlayabilirsiniz Öncelikle bu yöntemi ekler UISearchBar bir kategori yapmak Eğer bir textfield'ı olur yol:
[searchBar setKeyboardAppearence: UIKeyboardAppearanceDark];
Bunun bir UISearchBar'dan geldiğine ve bir UITextField ürününden gelmediğini kaçırdınız. UIKeyboardAppearanceAlert, tüm uygulamamda aynısını korumak istediğim saydam bir arkaplana sahiptir. Bu, UITextFields üzerinde gösterdiğiniz gibi elde edilebilir, ancak UISearchBar da içinde bir metin alanı vardır. Bu metin alanı için klavye görünümünü ayarlamak mümkün olup olmadığını bilmek istedim. –
Benim hatam. Dokümanlarda, UISearchBar sınıfında klavye saydamlığını ayarlamak için bir özellik veya yöntem olmadığı anlaşılıyor. Sadece klavye tipini ayarlayabilirsiniz. – Justin