यह नहीं रह गया है, iOS 7 पर काम करता है क्योंकि UISearchBar दृश्य पदानुक्रम बदल गया है। UITextView अब पहले सबव्यूव का एक सबव्यूव है (उदाहरण के लिए searchBar.subviews[0].subviews
सरणी में)।
ऐसा करने का एक और भविष्य का सबूत तरीका पूरे दृश्य पदानुक्रम को दोबारा जांचना होगा, और UITextField
के बजाय UITextInputTraits
प्रोटोकॉल की जांच करना होगा, क्योंकि वास्तव में यह विधि घोषित करता है। ऐसा करने का एक साफ तरीका श्रेणियों का उपयोग करना है।
- (void) setKeyboardAppearence: (UIKeyboardAppearance) appearence {
[(id<UITextInputTraits>) [self firstSubviewConformingToProtocol: @protocol(UITextInputTraits)] setKeyboardAppearance: appearence];
}
फिर UIView पर एक वर्ग को जोड़ने है कि इस विधि कहते हैं:
- (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;
}
अब आप उसी में खोज पट्टी पर कुंजीपटल उपस्थिति निर्धारित कर सकते हैं सबसे पहले UISearchBar पर एक वर्ग है कि इस विधि बढाए जिस तरह से आप किसी पाठ फ़ील्ड होगा:
[searchBar setKeyboardAppearence: UIKeyboardAppearanceDark];
आप इस तथ्य को याद करते हैं कि यह यूआईएसएक्सबार से आ रहा है, न कि यूआईटीएक्स्टफाल्ड। UIKeyboardAppearanceAlert की एक पारदर्शी पृष्ठभूमि है, जिसे मैं अपने सभी ऐप में रखना चाहता हूं। यह हासिल किया जा सकता है जैसा आपने यूआईटीएक्स्टफिल्ड्स पर प्रदर्शित किया है, हालांकि यूआईएसearchBar में इसके अंदर एक टेक्स्ट फ़ील्ड भी है। मैं जानना चाहता था कि इस पाठ फ़ील्ड के लिए कीबोर्ड उपस्थिति सेट करना संभव है या नहीं। –
मेरा बुरा। दस्तावेज़ों में, ऐसा लगता है कि UISearchBar क्लास पर कीबोर्ड पारदर्शिता सेट करने के लिए कोई संपत्ति या विधि नहीं है। आप केवल कीबोर्ड प्रकार सेट कर सकते हैं। – Justin