मेरे पास मेरे ऐप में UIWebView है, और समस्या यह है कि मेरे पास एक यूआईपीपीरेंस है जो सेगमेंट किए गए नियंत्रणों की उपस्थिति को संशोधित करता है, इसलिए यह इनपुट एक्सेसरी व्यू में सेगमेंटेड कंट्रोल को संशोधित करता है UIWebView टेक्स्टफील्ड के लिए, मैं इसे ठीक से दिखाना चाहता हूं, या इसे संशोधित करने का प्रयास नहीं करना चाहता हूं। [UIAppearance उपस्थिति] के बजाय यह वही है यह वर्तमान की तरह लग रहा है:आईओएस - UIWebView इनपुट एक्सेसरी व्यू को बदलने से UIAppearance सेटिंग्स को रोकें
उत्तर
मैं बस का उपयोग करके अपने आप के लिए इस समस्या का समाधान [UIAppearance appearanceWhenContainedIn]।
चयनकर्ता को अपने सभी कस्टम व्यू कंट्रोलर कक्षाओं की एक शून्य-समाप्त सूची भेजकर इसका उपयोग करें जिसमें वे तत्व शामिल हैं जिन्हें आप कस्टमाइज़ करना चाहते हैं। तो
[[UISegmentedControl appearance] setBackgroundImage:buttonBackgroundImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
उपयोग
[[UISegmentedControl appearanceWhenContainedIn:[MyViewController class], [MyOtherViewController class], nil] setBackgroundImage:buttonBackgroundImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
के बजाय आप सभी ViewControllers, बस अपने शीर्ष स्तर के लोगों को सूचीबद्ध करने के लिए जरूरत नहीं है। यह निम्न चाल को भी संभव बनाता है: UIViewController का एक 'खाली' उपclass CustomizedViewController बनाएं जो उप-वर्ग होने के अलावा कुछ और नहीं करता है - और उसके बाद UIViewController से अपने कोड में वहां से उप-वर्ग (मूल रूप से 'UIViewController' के सभी अवसरों को 'CustomizedViewController' के साथ बदलें -। को छोड़कर जहां CustomizedViewController वास्तव में अपनी सुपर क्लास के रूप में UIViewController घोषित
फिर
[[UISegmentedControl appearanceWhenContainedIn:[CustomizedViewController class], nil] setBackgroundImage:buttonBackgroundImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
मैंने कभी जवाब देने का विश्वास खो दिया था, मैं बाद में एक शॉट दूंगा, स्टीफन। धन्यवाद। – 8vius
दुर्भाग्य से जिस परियोजना पर मैं काम कर रहा हूं, उसमें कोड का उपयोग करके कई टीमों में सैकड़ों कक्षाएं फैली हुई हैं जिन पर मेरा नियंत्रण नहीं है। यूआईपीपेरेंस की सुंदरता यह है कि (सिद्धांत रूप में) मुझे उन कक्षाओं के साथ गड़बड़ नहीं करना है जिन्हें मैं त्वचा की कोशिश कर रहा हूं। मैं हर वर्ग के माध्यम से नहीं जा सकता जिसे मैं त्वचा चाहता हूं और यूआईपीपीरेंस को काम करने के लिए उन्हें एक सामान्य सुपरक्लास देता हूं। शायद अगर सेब में एक उपस्थिति शामिल हो गई थी, तब नहीं, जब मैं UIWebView के भीतर UIToolbars के लिए स्टाइलिंग को कम से कम दबा सकता हूं ... – tyler
मेरे लिए यह काम नहीं करता है ... जब मैंने वेब व्यू के साथ व्यू कंट्रोलर प्रस्तुत किया, तो टूलबार डिफ़ॉल्ट रूप से दिखाई देता था, लेकिन कीबोर्ड टूलबार अनुकूलित – HotJard
ठीक है का उपयोग करें, तो मैं अंत में इस के लिए एक समाधान यह पता लगाने में सक्षम था वर्तमान जवाब यह है कि यही कारण है कि पर मेरी टिप्पणी देखें। जवाब मेरे लिए काम नहीं करता है।
पुन: पुनरावृत्त करने के लिए, जो मैं आईओएस कोड को बता सकता हूं जो कि कीबोर्ड एक्सेसरीज़ बना रहा है, स्पष्ट रूप से यूआईटीूलबार पृष्ठभूमि सेट कर रहा है, इसलिए आपको अपनी यूआईपीपरेंस पृष्ठभूमि सेटिंग नहीं मिलेगी, लेकिन आपको अपना UIBarButtonItem स्टाइल मिल जाएगा। परिणाम आधा स्टाइल दृश्य है, जो बहुत खराब दिख सकता है। सौभाग्य से, मेरे डिजाइनर इस विशेष मामले के लिए डिफ़ॉल्ट स्टाइल पर वापस गिरने के साथ ठीक था।
तो, यह चाल वास्तव में यह पता लगाने के लिए थी कि यूआईपीपीरेंस के माध्यम से स्टाइल नहीं किया जाए। जिस तरह से मैं ऐसा किया इस को बदलने के लिए किया गया था:
id barButtonAppearanceProxy = [UIBarButtonItem appearance];
इस के साथ
:
// wtf: Style any UIBarButtonItem associated with a UIViewController
id barButtonAppearanceProxy = [UIBarButtonItem appearanceWhenContainedIn:[UIViewController class], nil];
यह पहली बार में मुझे अजीब लग रहा था क्योंकि मैं एक दृश्य-पदानुक्रम के मामले में रोकथाम के बारे में सोच रहा था ... लेकिन, यह सिर्फ यह कह रहा है कि हम केवल UIBarButtonItems को स्टाइल करेंगे जो UIViewController के साथ जुड़े हुए हैं। कारण यह कुंजीपटल एक्सेसरीज़ को प्रभावित नहीं करता है क्योंकि यह सीधे पैरेंट व्यू की विंडो जोड़ता है और UIViewController से जुड़ा नहीं है।
यह अभी भी आदर्श रूप में एक आदर्श समाधान नहीं है, हम केवल यूआईपीपीरेंस के साथ कीबोर्ड एक्सेसरीज़ को स्टाइल करेंगे। साथ ही, यह मानता है कि आपके सभी टूलबार UIViewControllers से जुड़े हुए हैं। सौभाग्य से मेरे लिए (और शायद आप में से अधिकांश) यह आम तौर पर मामला है।
मुझे यह समस्या है। यह मुझे पागल कर रहा है। – Jarsen
यह UISegmentedControl के लिए उपस्थिति सेटिंग्स प्रतीत नहीं होता है, लेकिन UIToolbar के लिए उपस्थिति, मुझे पूरा यकीन नहीं है, लेकिन मैं अपनी उपस्थिति को हटाए बिना इसे ठीक नहीं कर सकता।ऐसा लगता है कि UIWebView – 8vius
हाँ से टूलबार को निकालने का कोई आसान और सुरक्षित तरीका नहीं है, ऐसा लगता है कि समस्या यह है कि यह खंडित नियंत्रक के अचयनित क्षेत्र के अल्फा को बदल रहा है। मुझे आश्चर्य है कि क्या इसे यूआईटीूलबार के पास पारदर्शिता है। – Jarsen