2012-10-28 41 views
0

我有一個簡單的UIPopoverController,它加載了一個Youtube頁面。所有的工作正常,除了彈出似乎隨機解僱時觸摸裏面它的界限。UIPopoverController在被觸摸時關閉

這似乎並不一致(至於哪些接觸導致解僱,儘管它從來不是第一個),還有其他人看到過這種行爲嗎?

我在下面使用的代碼,所加載的URL僅用於測試。

-(void)showWebPopover 
{ 
    UIWebView * webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, WEBVIEW_POPOVER_WIDTH, WEBVIEW_POPOVER_HEIGHT)]; 
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://en.wikipedia.org/wiki/M"]]]; 
webView.backgroundColor = [UIColor blackColor]; 
//webView.scrollView.scrollEnabled = NO; 

UIViewController *popOver = [[UIViewController alloc] init]; 
popOver.view.frame = CGRectMake(0, 0, WEBVIEW_POPOVER_WIDTH, WEBVIEW_POPOVER_HEIGHT); 
popOver.view.backgroundColor = [UIColor blackColor]; 
popOver.contentSizeForViewInPopover = CGSizeMake(WEBVIEW_POPOVER_WIDTH, WEBVIEW_POPOVER_HEIGHT); 
[popOver.view addSubview:webView]; 

self.webViewPopoverController = [[UIPopoverController alloc] initWithContentViewController:popOver]; 

CGRect rect = CGRectMake(self.view.frame.size.width/2, self.view.frame.size.width/2, 1, 1); 
[self.webViewPopoverController presentPopoverFromRect:rect inView:self.view permittedArrowDirections:0 animated:YES]; 
} 
+0

也許你可以添加你的代碼 –

+0

做,希望這有助於! – AustinRathe

+0

剛剛碰到這個,我通過將UITapGestureRecognizer附加到控制器來解決它。 – Oldmicah

回答

0

可能爲時已晚,但我只是碰到了這一點,並通過附加UITapGestureRecognizer到視圖控制器解決它。 (不是PopoverController,但PopoverController使用控制器)。

func present (title:String, body:String, footer:String, sourceRect:CGRect) { 
    if let fPopup = self.storyBoard.instantiateViewControllerWithIdentifier("GuideViewController") as? GuideViewController { 
     popoverController = UIPopoverController(contentViewController: fPopup) 
     fPopup.titleLabel.text = title 
     fPopup.bodyTextField.text = body 
     fPopup.footerLabel.text = footer 

     //these 4 lines to set it up 
     var touchRecognizer = UITapGestureRecognizer(target: self, action: Selector("handleTap:")) 
     touchRecognizer.numberOfTapsRequired = 1 
     touchRecognizer.numberOfTouchesRequired = 1 
     fPopup.view.addGestureRecognizer(touchRecognizer) 


     popoverController?.presentPopoverFromRect(sourceRect, inView: parentView, permittedArrowDirections: UIPopoverArrowDirection.Any, animated: true) 
    } 
} 

func handleTap(sender: UITapGestureRecognizer) { 
    if sender.state == .Ended { 
     popoverController?.dismissPopoverAnimated(true) 
    } 
}