2011-01-02 10 views
9

मेरे पास मेरे सार्वभौमिक आईपैड ऐप में कई UIPopoverControllers हैं। एक बार एक निश्चित पॉपओवर खारिज कर दिए जाने के बाद अब मुझे एक फ़ंक्शन ट्रिगर करने की आवश्यकता है। यदि उपयोगकर्ता पॉपओवर के अंदर "बंद" पर क्लिक करता है, तो मैं इसे आसानी से कर सकता हूं, लेकिन यदि वे पॉपओवर को छिपाने के लिए स्क्रीन को स्पर्श करते हैं, तो मैं अपना फ़ंक्शन ट्रिगर नहीं कर सकता।आईपैड का पता लगाता है जब UIPopoverControllers को खारिज कर दिया जाता है

मैं कुछ समय के लिए googling रहा है और किसी भी प्रतिनिधि विधियों को नहीं मिल रहा है जो मैं अपने मुख्य दृश्य नियंत्रक में उन्हें पकड़ने के लिए उपयोग करने में सक्षम हो सकता है। मुझे कुछ ऐसा पसंद आएगा जैसे डिस्मिस्पापोवर कंट्रोलर - लेकिन मेरा अनुमान है कि यह उपलब्ध नहीं है।

यदि नहीं, तो मुझे लगता है कि करने के लिए केवल एक चीज स्पर्शों का पता लगाने और फिर ट्रिगर करना होगा? असल में मैं एक UITableView पंक्ति को हाइलाइट कर रहा हूं और पॉपओवर लोड कर रहा हूं। मुझे पंक्ति को अचयनित करने की आवश्यकता है - इसलिए बस [टेबल reloaddata] को कॉल करना चाहते हैं।

इस पर किसी भी मदद के लिए धन्यवाद!

उत्तर

21

आपको UIPopoverController पर एक प्रतिनिधि को असाइन करने की आवश्यकता है और फिर - (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController विधि लागू करें। उदाहरण के लिए:

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController { 
    // do something now that it's been dismissed 
} 

:

@interface FooController : UIViewController <UIPopoverControllerDelegate> { 
    // ... 
} 
// ... 
@end 

जब आप UIPopoverController (जैसे कि, इस उदाहरण के लिए, FooController में) ...

UIPopoverController *popover = // ... 
popover.delegate = self; 

तब का दृष्टांत, आप विधि लागू करेगा अनुमोदित, मैंने इसका परीक्षण नहीं किया है, लेकिन ऐसा लगता है कि इसे काम करना चाहिए ...

आशा इससे मदद मिलती है!

4

आप निम्नलिखित असाइनमेंट के बाद popoverControllerDidDismissPopover प्रतिनिधि विधि का उपयोग कर सकते हैं: self.popoverController.delegate = self;

ध्यान दें कि यदि आप प्रोग्रामेटिक रूप से [self.popoverController dismissPopoverAnimated: YES] को कॉल करते हैं तो popoverControllerDidDismissPopover प्रतिनिधि विधि को कॉल नहीं किया जाता है।

+0

यह सच है, दस्तावेज़ीकरण में देखें: 'पॉपओवर नियंत्रक इस विधि को प्रोग्राममेटिक कॉल के जवाब में खारिज करने के लिए कॉल नहीं करता हैप्रॉपऑनरेटेड: विधि। यदि आप प्रोग्रामर रूप से पॉपओवर को खारिज करते हैं, तो आपको डिपॉजिट को कॉल करने के तुरंत बाद कोई क्लीनअप क्रियाएं करनी चाहिए .ऑपरेटेड: विधि। –

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