2010-12-17 25 views
13

http://iphonedevelopment.blogspot.com/2009/02/alert-view-with-prompt.htmlक्यों खारिज नहीं किया जाता है WithClickedButtonIndex कभी भी क्लिक किया जाता है बटनऑट इंडेक्स?

मुझे लगता है कि कोड का उपयोग कर रहा प्राप्त करने के लिए अपने iPhone अनुप्रयोग एक शामिल UITextField के साथ एक alertView प्रदर्शित करने के लिए और रद्द करने और ठीक बटन मिलान।

उपयोगकर्ता टेक्स्ट दर्ज कर सकते हैं, कैंसल या ओके हिट कर सकते हैं ... और मैं क्लिक किए गए टेक्स्ट को देखता हूं ... क्लिक किए गए बटन के अंदर मेरे कोड का उपयोग करके बटनऑट इंडेक्स विधि।

यह सब कुछ 1 चीज़ को छोड़कर काम करता है: ठीक है, उपयोगकर्ता कीबोर्ड पर हो सकता है। मैं ओके क्लिक को अनुकरण करने के लिए dismissWithClickedButtonIndex का उपयोग कर रहा हूं ... लेकिन फिर क्लिक किया गया बटनऑट इंडेक्स कभी नहीं बुलाया जाता है।

बर्खास्त नहीं होना चाहिए WithClickedButtonIndex भी क्लिक बटन बटनऑट इंडेक्स?

मैं क्लिक करने के लिए बटन क्लिक कर रहा हूं बटन कॉल करने के लिए बटन, या ठीक है, या यहां तक ​​कि डोन भी मारा जाता है।

उत्तर

0

मैं यकीन नहीं है कि मैं पूरी तरह से अपने प्रश्न समझ में नहीं हूँ, लेकिन यहाँ मेरी कोशिश है:

सबसे पहले, आपको उदाहरण से if (buttonIndex != [alertView cancelButtonIndex]) दूर करने के लिए की जरूरत है। यह ठीक और कैंसल बटन के लिए काम करना चाहिए।

कीबोर्ड की डोन कुंजी को पहचानने के लिए, UITextFieldDelegate के - (BOOL)textFieldShouldReturn:(UITextField *)textField का उपयोग करें। कीबोर्ड को खारिज करने के लिए यहां आप [textField resignFirstResponder] पर कॉल कर सकते हैं।

इसके अलावा, clickedButtonAtIndex में आप क्या करना चाहते हैं? क्या आप अपनी खुद की विधि नहीं बना सकते हैं और जब आपको आवश्यकता हो तो इसे कॉल करें?

37

चूंकि यह एक पुराना सवाल है, तो शायद आपने इसे अभी तक समझ लिया है, लेकिन मैं इस से अविश्वसनीय रूप से निराश था और Google से कोई मदद नहीं मिली, इसलिए भविष्य में इस पर आने वाले किसी भी व्यक्ति के लिए: जब आप dismissWithClickedbuttonIndex पर कॉल करें, जिसे विधि कहा जाता है alertView:didDismissWithButtonIndex है, alertView:clickedButtonAtIndex नहीं। यह बिल्कुल वैसे ही व्यवहार करता है, और मैं यह नहीं समझ सकता कि वे एक ही कार्रवाई के लिए दो अलग-अलग तरीकों क्यों होंगे, लेकिन वहां है।

+0

इन पंक्तियों के लिए धन्यवाद, अजीब प्रतिनिधिमंडल पैटर्न, dismissWithClickedButton कम से कम दोनों डैलिगेटर तरीकों एक बटन क्लिक करता है और अन्य के साथ सौदा करने के लिए कॉल चेतावनी को बंद करने के साथ सौदा करना चाहिए। भ्रामक है, निरर्थक अनावश्यक जटिलता –

2

clickedButtonAtIndex कहा जाता है जब उपयोगकर्ता वास्तव में बटन पर क्लिक करता है। बटन पर क्लिक करने से अलर्ट को खारिज कर दिया जा सकता है या नहीं। मानक ओके/रद्द बटन पर क्लिक पर अलर्ट को खारिज करने का असर पड़ता है। यदि कोई क्लिक खारिज करने के लिए अनुवाद करता है या dismissWithClickedbuttonIndex विधि कहा जाता है, तो DismissWithButtonIndex कहा जाता है।

+0

दरअसल, लेकिन यह देखने के एक प्रतिनिधिमंडल पैटर्न बिंदु से कोई मतलब नहीं है।इसका अर्थ क्या है चेतावनी ViewClickedButtonAtIndex को SOMETIMES कहा जाता है एक बटन दबाया जाता है और प्रतिनिधिमंडल विधि के अनुसार हमेशा नहीं होता है। चाहे वह अलर्ट बंद कर देता है या नहीं, जो कि एक अन्य मुद्दा है, अब यह की जिम्मेदारी है DismissWithButtonClicked: –

0

मैं UIAlertView (ब्लॉक) के साथ एक ही समस्या categoty UIAlertView-Blocks

मेरे समाधान था: UIAlertView (ब्लॉक) -> MYAlertView: UIAlertView

कभी कभी विधि: - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex कहा जाता है। कभी-कभी उसने फोन नहीं किया।

तो ... मैंने कई स्रोतों में समाधान खोजने की कोशिश की। फिर मैंने यूआईएलर्टव्यू के सबक्लास को एक ही कोड के साथ बनाया है। और मेरी समस्या हल हो गई थी। वास्तव में इसका उपयोग करना थोड़ा मुश्किल है। लेकिन अब इस घुसपैठ कीड़े नहीं।

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