2011-08-20 24 views
9

को खारिज करने से UIPopover को रोकें, मैं सोच रहा था कि जब भी आप पॉपओवर के बाहर स्क्रीन को स्पर्श करते हैं तो आईपैड पॉपओवर को स्वचालित रूप से खारिज करने से रोकने का कोई तरीका था? यदि नहीं, तो क्या "popoverDidDismiss" जैसी कोई विधि है जो मैं कह सकता हूं कि पॉपओवर को कब खारिज कर दिया गया था?स्वचालित रूप से

उत्तर

25

हाँ आप कर सकते हैं। यह ऐप्पल दस्तावेज से बाहर है।

जब पॉपओवर व्यू के बाहर उपयोगकर्ता नल के कारण एक पॉपओवर खारिज कर दिया जाता है, तो पॉपओवर स्वचालित रूप से कार्रवाई के अपने प्रतिनिधि को सूचित करता है। यदि आप एक प्रतिनिधि प्रदान करते हैं, तो आप पॉपऑवर को बर्खास्त करने या बर्खास्तगी के जवाब में अतिरिक्त कार्रवाइयां करने के लिए इस ऑब्जेक्ट का उपयोग कर सकते हैं। popoverControllerShouldDismissPopover: प्रतिनिधि विधि आपको यह नियंत्रित करने देती है कि पॉपओवर को वास्तव में खारिज कर दिया जाना चाहिए या नहीं। यदि आपका प्रतिनिधि विधि को लागू नहीं करता है, या यदि आपका कार्यान्वयन YES देता है, तो नियंत्रक पॉपओवर को खारिज कर देता है और प्रतिनिधि को popoverControllerDidDismissPopover: संदेश भेजता है।

बस प्रतिनिधि विधि popoverControllerShouldDismissPopover:

को नहीं लौट यहाँ आगे पढ़ने के लिए एक कड़ी है।

Popover Guide

+0

त्वरित करने के लिए धन्यवाद करना चाहता हूँ न अगर जवाब दे दो। मैंने इसे लागू करने की कोशिश की और ऐसा लगता है कि यह काम नहीं कर रहा है। मुझे इसे देखने के लिए .m में डालना चाहिए जहां पॉपओवर दिखाई देता है, पॉपओवर के अंदर दृश्य नहीं, है ना? –

+0

क्या आपको यह काम मिल गया? यदि हां, तो कैसे? यदि नहीं, तो इसे सही उत्तर के रूप में क्यों चिह्नित किया जाता है? – ngb

+0

क्या आपको पॉपओवर नियंत्रक के लिए प्रतिनिधि को अपना व्यू कंट्रोलर बनाना याद आया? लिंक पर –

4
- (BOOL) popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController 
{ 
    return NO; 
} 

आप के लिए यह करता है और आप पॉपओवर खारिज करने के लिए अपने पॉपओवर में एक विशिष्ट बार बटन आइटम या कुछ और असाइन कर सकते हैं यही कारण है कि।

+0

मैंने इसे कार्यान्वित करने की कोशिश की और ऐसा लगता है कि यह काम नहीं कर रहा है। मुझे इसे देखने के लिए .m में डालना चाहिए जहां पॉपओवर दिखाई देता है, पॉपओवर के अंदर दृश्य नहीं, है ना? –

+0

हां। क्या आपने हेडर फ़ाइल में UIPopoverControllerDelegate को लागू करने का संकेत दिया था? – Bourne

+0

मुझे ऐसा लगता है। उस फ़ाइल में जिसमें पॉपओवर की सामग्री शामिल है, में .h में प्रोटोकॉल विकल्प व्यू कंट्रोलर डिलीगेट - (शून्य) didPick: (NSString *) स्ट्रिंग; अंत आईडी प्रतिनिधि; और .m: संश्लेषित प्रतिनिधि; और फ़ाइल के .h में जहां पॉपओवर प्रकट होता है मेरे पास है: इंटरफ़ेस उदाहरण दृश्य नियंत्रक: UIViewController { UIPopoverController * popoverController; विकल्प दृश्य नियंत्रक * विकल्प दृश्य नियंत्रक; } फिर .m में UIpopoverController और OptionsViewController को संश्लेषित करें। क्या मुझे कुछ याद आ रही है? धन्यवाद। –

1

भी यू

self.modallnpopover = yes;

उपयोग कर सकते हैं यदि आप एक विशेष दृश्य में खारिज करना चाहते

self.modallnpopover = no;

आप खारिज करने के लिए यह

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