2013-10-01 8 views
7

में शीर्ष बटन हाइलाइट करें मुझे UIAlertView में डिफ़ॉल्ट रूप से प्रदर्शित 3 बटन के साथ UIAlertView मिला है। मैं शीर्ष बटन को बोल्ड/हाइलाइट करना चाहता हूं। मेरी समझ और परीक्षण से, 'रद्द करें' बटन हाइलाइट किया गया है। समस्या कोई फर्क नहीं पड़ता कि मैं रद्द बटन कैसे सेट करता हूं, यह आखिरी पंक्ति में रखा जाता है। मैं इसे पहला बटन नहीं मिल सकता।UIAlertView

मैं रद्द बटन की स्थापना स्पष्ट

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title 
               message:message 
               delegate:self 
             cancelButtonTitle:@"Top Button" 
             otherButtonTitles:@"Middle Button", @"Bottom Button", nil]; 

के साथ ही रद्द बटन

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title 
                 message:message 
                 delegate:self 
              cancelButtonTitle:nil 
              otherButtonTitles:@"Top Button", @"Middle Button", @"Bottom Button", nil]; 
alert.cancelButtonIndex = 0; 

उत्तर

8

यह समस्या के सूचकांक की स्थापना की कोशिश की है वास्तव में परिवर्तन एप्पल आईओएस 7 में किए गए कारण होता है। आईओएस 7 से पहले हम [alertView subviews] पर कॉल करके UIAlertView के सबव्यूव्यू तक पहुंचने में सक्षम थे। लेकिन चूंकि आईओएस 7 हमें किसी भी सबव्यूज़ तक पहुंच नहीं देता है ([alertView subviews].count हमेशा शून्य लौटाएगा) हम यूआईएलर्टव्यू को जिस तरीके से इस्तेमाल करते हैं उसे कस्टमाइज़ नहीं कर सकते हैं।

तो आईओएस 7 के तहत अपने लक्ष्य को प्राप्त करने का एकमात्र तरीका कस्टम दृश्य बनाना है जो UIAlertView जैसा दिखता है और फिर इसे अपनी पसंद के अनुसार अनुकूलित करें।

लेकिन आप आईओएस 7 से पहले एक iOS संस्करण के लिए कोडिंग कर रहे हैं की तुलना में आप एक बटन का उपयोग करने के लिए इस आसान हैक इस्तेमाल कर सकते हैं:

UIAlertView *alertView = [[UIAlertView alloc] init]; 
[alertView addButtonWithTitle:@"Yes"]; 
UIButton *yesButton = [alertView.subviews lastObject]; //is nil under iOS 7 

इस तरह से आप पहले बटन के लिए उपयोग मिलेगा। इसके बाद आप सामान्य रूप से अपने UIAlertView को कस्टमाइज़ कर सकते हैं।

वैसे: ऐप्पल न केवल उन सभी UIAlertView को वही डिज़ाइन देना चाहता था, जिससे हम उन्हें अनुकूलित कर सकते हैं। कारण एचसीआई शोध (मानव-कंप्यूटर-इंटरैक्शन) में निहित है। लोग सोचते हैं कि निचला बटन हमेशा 'डिफ़ॉल्ट' उत्तर होता है यदि यह सभी ऐप्स में लागू किया जाता है।
इसके अलावा नीचे बटन UIAlertView में हाइलाइट बटन है। तो इसका दृश्य वजन उसी पाठ के साथ बटन के दृश्य वजन से अधिक मजबूत है। यह एक और कारक है कि लोग इसे चुनते हैं। और यही वजह है कि हाइलाइट किए गए बटन को कभी भी विनाशकारी और अपरिवर्तनीय कार्रवाइयों का कारण नहीं बनना चाहिए ('आप अपने सभी सहेजे गए गेम को हटाना चाहते हैं' हमेशा 'मेरे सहेजे गए गेम रखें' बटन को हाइलाइट करना चाहिए और 'सब कुछ हटाएं' नहीं कह रहा है)।
इसलिए ऐप्पल हमेशा Cancel Button बनाता है इससे कोई फर्क नहीं पड़ता कि आपने बटन को किस क्रम में जोड़ा है। इसलिए यदि आपका ऐप पूरी तरह से कस्टम इंटरफ़ेस का उपयोग नहीं करता है और ऐप्पल द्वारा प्रदान किए गए कई यूजर इंटरफेस तत्वों का उपयोग करता है, तो मैं अत्यधिक अनुशंसा करता हूं कि आप उस व्यवहार को बदलने की कोशिश न करें और नीचे बटन को अपना 'डिफ़ॉल्ट' बटन बनाएं।

+0

ध्यान दें कि अलर्ट दृश्य पदानुक्रम को बदलना हमेशा निजी घोषित किया गया था और इसके लिए वर्जित किया गया था। इसलिए यह ऐपस्टोर समीक्षा प्रक्रिया के दौरान इनकार कर सकता है। – vikingosegundo

+0

एचसीआई के बारे में आपका मुद्दा बहुत समझ में आता है और मुझे लगा कि यही कारण है कि ऐप्पल आपको कुछ भी बदलने नहीं देता है। हालांकि, मेरी राय में, मुझे शीर्ष बटन पर खींचा गया है, इसलिए मैं इसे बदलने की कोशिश कर रहा था। स्पष्टीकरण के लिए धन्यवाद। –

0

वहाँ एक ग्राहक चेतावनी दृश्य DTAlertView.

मुझे आशा है कि यह आपकी मदद कर सकता है।

संबंधित मुद्दे