2011-09-07 17 views
8

के लिए मैं severals पहले प्रत्युत्तर अंक लेकर संदेह में हूँ:समझौता प्रणाली तर्क पहले प्रत्युत्तर

  1. अगर मैं - becomeFirstResponder फोन करता है सिस्टम कॉल – canBecomeFirstResponder पहले? क्यूं कर?
  2. - becomeFirstResponder और – canBecomeFirstResponder दोनों क्यों हैं? किस स्थितियों में वे अलग-अलग मूल्यों को वापस कर सकते हैं?
  3. क्या एप्लिकेशन को हर बार पहली प्रतिक्रिया देने वाला है? यदि हां, तो क्या हो रहा है जब मैं किसी ऑब्जेक्ट पर – resignFirstResponder पर कॉल करता हूं? क्या UIApplication तत्काल उत्तरदाता बन गया है या क्या यह "टोकन" उत्तरदाता श्रृंखला में किसी बिंदु पर फेंक दिया गया है? क्या मैं उस तीर्थयात्र टोकन से छुटकारा पाने के लिए UIApplication ऑब्जेक्ट पर - becomeFirstResponder पर कॉल कर सकता हूं?
  4. ...

कृपया किसी ने मुझसे, कैसे प्रणाली ने अपना पहला प्रत्युत्तर का प्रबंधन करता है समझाने। हुड के तहत क्या हो रहा है जब कुछ वस्तु पहले उत्तरदाता बन जाती है, जब पहले उत्तरदाता को इस्तीफा दे दिया जाता है। सिस्टम क्या कॉल करता है ... धन्यवाद!

उत्तर

6
  1. becomeFirstResponder का डिफ़ॉल्ट कार्यान्वयन canBecomeFirstResponder पर कॉल करता है। ऐसा इसलिए है क्योंकि एक उत्तरदाता जो canBecomeFirstResponder से कोई देता है उसे पहले उत्तरदाता नहीं माना जाता है।
  2. becomeFirstResponder रिसीवर वास्तव में पहला उत्तरदाता बन जाएगा यदि यह सफल होता है। canBecomeFirstResponder सिर्फ यह जांचता है कि रिसीवर वास्तव में कुछ भी बदले बिना, पहले उत्तरदाता बनने के इच्छुक है या नहीं। यह संभव है कि becomeFirstResponder विफल हो सकता है यदि वर्तमान पहले उत्तरदाता इस्तीफा देने से इंकार कर देता है। ऐसी अन्य स्थितियां हो सकती हैं जहां becomeFirstResponder भी असफल हो सकता है।
  3. आपके कोड में ऐसा कुछ भी नहीं होना चाहिए जिसमें पहले उत्तरदाता की स्थिति हो। निजी यूआईआरस्पेन्डर विधि firstResponder द्वारा निर्णय, सिस्टम इस मामले में कोई विशेष डिफ़ॉल्ट असाइन नहीं करता है।

असल में, जब कोई पहला उत्तरदाता बनना चाहता है तो वर्तमान पहले उत्तरदाता (यदि कोई है) को इस्तीफा देने के लिए कहा जाता है, और फिर नई वस्तु पहले उत्तरदाता बन जाती है। इससे सिस्टम ऑन-स्क्रीन कीबोर्ड प्रदर्शित कर सकता है या कुछ अन्य कार्रवाई कर सकता है। जब पहला उत्तरदाता इस्तीफा दे देता है, तो यह सिस्टम को ऑन-स्क्रीन कीबोर्ड को छिपाने या कुछ अन्य कार्यवाही करने का कारण बन सकता है।

जब एक गैर-स्पर्श ईवेंट आता है, तो इसे पहले UIWindow को वितरित किया जाता है। UIWindow इसे पहले उत्तरदाता को भेजता है। प्रलेखन यह निर्दिष्ट नहीं करता है कि UIWindow ईवेंट को स्वयं को संभालने का प्रयास करता है या नहीं (और इसे सामान्य रूप से यूआईपीप्लिकेशन के रूप में पास करता है अगर यह स्वयं को संभाल नहीं लेता है) या अगर कोई पहला उत्तरदाता नहीं है तो केवल ईवेंट को अनदेखा करता है।

विवरण के लिए the documentation देखें।

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