2011-03-27 11 views
5

सरल: एक दृश्य, मैं वर्तमान में PopoverFromRect का उपयोग कर एक CGRect में एक UIPopoverController प्रस्तुत करता हूं ... और न ही तीर या पॉपओवर फ्रेम मेरे द्वारा पारित संदर्भ में पूछे गए निर्देशांक के पास भी दिखाई देता है। कोई सुराग? मैं इसे अपने आप से समझने की कोशिश कर रहा हूं लेकिन छोड़ रहा हूं। यहां कोड है:यूआईपीओपीओवर नियंत्रक: मेरा पॉपओवर क्यों नहीं दिखता है जहां मैं चाहता हूं?

if(!myContentController){ 
    myContentController = [[MyContentController alloc] initWithNibName:myNibName bundle:[NSBundle mainBundle]]; 
    // This works pretty well. actually when i show the popover 
    // i see everything inside as it's supposed to. 
} 
if(!popover){ 
    popover = [[UIPopoverController alloc] initWithContentViewController:myContentController]; 
} 
else{ 
    [popover setContentController:myContentController]; 
} 
popover.delegate = self; 
CGPoint touchPointInView = [self touchPoint];//This is working fine too.I've been checking with NSLog. 
popover.ContentSize = myPopoverSize;//In this case {320,480} 
[popover presentPopoverFromRect:CGRectMake(touchPoint.x,touchPoint.y,myPopoverSize.width,myPopverSize.height) 
          inView:self.view 
     permittedArrowDirections:UIPopoverArrowDirectionAny 
         animated:YES]; 

अगला क्या होता है? पॉपओवर यह नहीं दिखाता कि यह कहां होना चाहिए। यदि मैं {0,0} पास करता हूं तो यह स्क्रीन के बीच में दिखाता है जैसे दृश्य आकार (768,512) था। मैंने सभी दृश्य आयामों की जांच की और वे ठीक हैं, फ्रेम, सीमाएं, आदि ...। क्या कोई जानता है कि मैं क्या गलत कर रहा हूं?

+1

क्या आप संबंधित कोड पोस्ट कर सकते हैं? – Jhaliya

+0

@Jhaliya क्षमा करें मैं जल्द ही करूँगा। लेकिन डिफ़ॉल्ट प्राथमिकता है, यहां तक ​​कि कोड में कहीं और मैं एक ही पॉपओवर का उपयोग कुछ प्रदर्शित करने के लिए करता हूं और यह काम करता है। शायद इससे संबंधित है। – jsicary

+0

ठीक है, सुनिश्चित करें कि आप प्रस्तुत करने के लिए सही दृश्य पारित कर रहे हैं PopoverFromRect .. – Jhaliya

उत्तर

14

CGRect आप presentPopoverFromRect को दे रेक्ट कि यह पॉपओवर अगले (नहीं में) को प्रदर्शित करेगा है। रेक्ट के स्थान के आधार पर, पॉपओवर निर्दिष्ट आय के उपयुक्त पक्ष पर दिखाई देगा।

यदि आप पॉपओवर को किसी विशिष्ट बिंदु पर दिखाना चाहते हैं, तो इसे उत्पत्ति के साथ बिंदु और आकार के रूप में 1,1 के रूप में प्रस्तुत करें। तो presentPopoverFromRect लाइन में CGRectMake होना चाहिए:

CGRectMake(touchPoint.x,touchPoint.y,1,1) 

भी सुनिश्चित करें कि Touchpoint ध्यान में रखते हुए (अपने मामले में self.view) के सापेक्ष है बनाते हैं।

  • setContentController setContentViewController
  • popover.popoverContentSize
  • popover.ContentSize होना चाहिए किया जाना चाहिए:


    वैसे, वहाँ कोड में कुछ अन्य त्रुटियों (शायद सिर्फ सवाल में लेखन कर रहे हैं)

  • myPopverSize.height myPopoverSize.height किया जाना चाहिए (लेकिन यह 1 से बदल दिया जाएगा)
+0

सुधार के लिए धन्यवाद। आप सही हैं, वे टाइपो हैं। टचपॉइंट मान ठीक हैं, मैं उन्हें NSLog के साथ निगरानी कर रहा हूं और वे अच्छे हैं। यहां तक ​​कि टच प्वाइंट के रूप में गुजरने (0,0) भी यह प्रदर्शित नहीं करता है, जहां मैंने सोचा था कि यह चाहिए, लेकिन यदि वही व्यवहार है जो आपने निश्चित रूप से गलत किया है तो मैं गलत कर रहा हूं। मैं आपको जल्द ही बता दूंगा। – jsicary

+0

धन्यवाद, मैं इस मुद्दे को ठीक करने के लिए घंटों खर्च कर रहा हूं – dreampowder

1

मीटर में वाई मामले इस समस्या का कारण पीछा कर रहा था। यह भी संभव है कि आपका विचार एक तालिका दृश्य है। इसलिए, जब आप इसे स्क्रॉल करते हैं और उस तालिका में एक रेक्ट में UIPopover दिखाने का प्रयास करते हैं, तो यह दिखाया नहीं जा सकता है। मैंने इसका इस्तेमाल किया:

[_popoverController presentPopoverFromBarButtonItem:self.navigationItem.rightBarButtonItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
संबंधित मुद्दे