我已閱讀UIPopoverController docs以及更多10個stackoverflow解決方案,這些解決方案在iOS 8.0.2 ipad設備中都不起作用。iOS 8 UIActivityViewController和/或UIPopoverController在點擊它們之外時不會消失
目標:
我想提出點擊它外面dissmisses當共享視圖。
問題:
該代碼在iOS 8.0下工作正常。
密碼(試了很多版本...):
NSArray *dataToShare = @[url]; // ...or whatever pieces of data you want to share.
UIActivityViewController* activityViewController =
[[UIActivityViewController alloc] initWithActivityItems:dataToShare
applicationActivities:nil];
activityViewController.modalInPopover = YES;
self.act = [[UIPopoverController alloc] initWithContentViewController:activityViewController];
[self.act presentPopoverFromRect:CGRectMake(self.view.bounds.size.width/2, self.view.bounds.size.height/2, self.view.bounds.size.width/2, self.view.bounds.size.width/2) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
self.act.delegate = self;
我已經添加了:
UIPopoverControllerDelegate
我曾嘗試:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
一旦該
UIPopoverController
被呈現在視圖損失集中和不登記觸摸。因此,我無法處理自我之外的觸動,以迫使他們失戀。
也...
NSArray *dataToShare = @[url]; // ...or whatever pieces of data you want to share.
UIActivityViewController* activityViewController =
[[UIActivityViewController alloc] initWithActivityItems:dataToShare
applicationActivities:nil];
activityViewController.modalInPopover = YES;
UIPopoverPresentationController *presentationController = [activityViewController popoverPresentationController];
presentationController.sourceView = self.view; // if button or change to self.view.
[self.parentViewController presentViewController:activityViewController animated:YES completion:nil];
,我試圖從沒有藏漢工作父呈現UIActivityViewController和UIPopoverController。
請幫忙,我失去了這個愚蠢的工作在iOS 7.1上,而不是在iOS 8+這是荒謬的,我仍然不知道爲什麼。
我會嘗試添加也在iOS8 +中消失的取消按鈕。
更新1:
添加一個UIButton內的UIBarButtonItem沒有幫助...
UIButton *control = (UIButton *) sender;
[control setFrame:CGRectMake(300, 300, 100, 100)];
[control setBackgroundColor:[UIColor redColor]];
UIBarButtonItem *barButtonItemView = [[UIBarButtonItem alloc] init];
[barButtonItemView setCustomView:control];
[self.popup presentPopoverFromBarButtonItem:barButtonItemView permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES];
更新2 - 2014年12月19日。 (iOS 7.1。 - 8.1.2):
接受的答案適用於iOS 8.1。我在iOS 7.1中遇到了一些錯誤。所以我修改它爲iOS 7.1工作。我已經在回答下面的評論中說明了代碼在哪些設備上工作。
// publish - sharing
NSArray *dataToShare = @[url]; // ...or whatever pieces of data you want to share.
UIActivityViewController* activityViewController =
[[UIActivityViewController alloc] initWithActivityItems:dataToShare
applicationActivities:nil];
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
NSLog(@" SHARING - 1 - ");
[self presentViewController:activityViewController animated:YES completion:^{}];
}
else
{
// Change Rect to position Popover
NSLog(@" SHARING - 2 - ");
self.popup = [[UIPopoverController alloc] initWithContentViewController:activityViewController];
[self.popup presentPopoverFromRect:CGRectMake(self.view.frame.size.width * 3/5 ,
self.view.frame.size.width/2,
self.view.frame.size.width/10,
self.view.frame.size.width/10) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
我在iOS 8.1.2(iPad)上測試了這段代碼,它仍然無法正常工作。在共享視圖外部單擊不會消除它。僅使用此代碼根本不起作用:( – 2014-12-18 10:17:34
分享的觸發器是什麼?(例如推送共享按鈕) 我將顯示一部分代碼,該代碼在我的程序中工作 ' - (IBAction)shareButton :(ID)發送 { 的NSArray *項目= @你想分享的東西]; UIActivityViewController * activityViewController = [[UIActivityViewController頁頭] initWithActivityItems:項目applicationActivities:applicationActivities]; activityViewController.popoverPresentationController.sourceView = self.view ; [self presentViewController:activityViewController animated:YES completion:nil]; }' – ahiru 2014-12-19 12:28:31
您評論過的代碼te是正確的,並且適用於iOS 8.1.2。 Ty m8 :)。我已經編輯過你的帖子,審覈後我會接受答案。問題出在「activityViewController.modalInPopover = YES;」代碼行。刪除它解決了這個問題。我添加了一些修改,以便代碼適用於iOS 7.1.0 - iOS 8.1.2。完整的修改將在問題的UPDATE代碼中可見。該代碼已經在(設備)上測試過:iPod和iPad 2(iOS 8.1.2)以及所有模擬器(iOS 7.1和8.1)。 – 2014-12-19 13:14:17