2013-07-05 34 views
0

我正在使用UIActivityViewController來實現圖像共享。UIActivityViewController:選擇被拒絕權限的活動會導致死鎖

UIActivityViewController *shareVC = [[UIActivityViewController alloc] initWithActivityItems:@[image] applicationActivities:nil]; 
[shareVC setCompletionHandler:^(NSString *activityType, BOOL completed){ 
    NSLog(@"completed image export activity: %@ - %d", activityType, completed); 
}]; 
[self presentViewController:shareVC animated:true completion:nil]; 

在測試中,我注意到,如果用戶選擇,例如,「指定給聯繫人」,但隨後否認隨後的對話框中的權限,然後就被帶到寫着「這是一個屏幕應用程序無權訪問您的聯繫人您可以啓用「隱私設置」中的訪問權限,「從中無法退出。然後讓他們回到實際應用程序的唯一方法是手動重新啓動它。

我很高興現在離開這種行爲,因爲我不預期任何用戶會特別困擾它,但我想知道是否有一個明智的方法來解決它,如果這確實是預期的行爲。

+0

我還沒有在模擬器上試過:) – PeterT

回答

0

我的工作在iPad平臺上,並在這方面提出一個UIActivityViewController直接根據​​是錯誤的,其中規定,

當呈現視圖控制器,你必須這樣做使用適當的手段當前設備。在iPad上,您必須在彈出窗口中顯示視圖控制器。在iPhone和iPod touch上,您必須以模態形式呈現它。

在大多數情況下,iPad上模態顯示的視圖控制器的行爲似乎非常好,但這種情況說明了爲什麼它不合適。我不知道如何在iPhone/iPod touch上處理相同的情況,因爲我還沒有真正查看這些平臺。

現在我正在將它展示在UIPopoverController中,解釋應用程序無法訪問聯繫人的視圖出現在彈出窗口中,並且在彈出窗口被取消時被解除。不幸的是,在這種情況下,似乎完成處理程序不會被調用;我不確定這是一個iOS錯誤,還是我對某些東西缺乏瞭解。目前這對我來說是一個小問題,所以我必須解決它。

不幸的是,遇到相關問題的人似乎不大可能得到我的問題/答案的幫助;也許我會試着編輯這個問題。

0

嗯,也許你可以檢查當新的「這個應用程序無法訪問你的聯繫人,你可以...」 - 顯示Viewcontroller時是否調用segue。然後,您可以操縱segue的destinationViewController屬性,並添加例如一個按鈕,並使用戶可以返回。

所有高度理論。

+0

聽起來像是一個探索的潛在途徑......我現在有更緊迫的問題,但至少這是一個主角。 – PeterT

+0

你的應用程序中不會有這樣的segue嗎?訪問被拒絕的消息來自iOS本身。 –