0

我試圖在我的應用程序中調出一個電子郵件窗口,但是假設有取消和發送的頂部工具欄正在被導航控制器遮擋。Modal View的工具欄被遮擋。 MFMailComposeViewController

我相信原因是,我打電話

if ([MFMailComposeViewController canSendMail]) { 
      MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init]; 
      controller.mailComposeDelegate = self; 
      [controller setToRecipients:[NSArray arrayWithObject:@"[email protected]"]]; 
      [controller setSubject:@"Mobile HelpDesk App"]; 
      [controller setMessageBody:@"" isHTML:NO]; 
      if (controller){ 
       [self presentViewController:controller animated:YES completion:^{}]; 
      } 

     } 

從孩子的ViewController控制滾動型(用於尋呼)內的視圖。

如何讓工具欄位於導航欄的頂部?現在,它只顯示新的電子郵件窗口,但我無法取消或發送電子郵件。

我試過使用[self.parentViewController presentViewController:controller animated:YES completion:^{}];,但那沒有做任何事情。

謝謝!

回答

1

不能使用presentViewController:...從視圖控制器,其觀點是不是在視圖層次結構的頂部(所以最有可能不會佔據整個屏幕)。正如你所看到的,這導致了一個呈現的視圖,這可能是部分可見的,並且可能不響應某些區域的觸摸。

嘗試self.parentViewController是正確的解決方案(儘管您顯示的代碼是無效的)。您需要確保您在層次結構中導航足夠多,才能到達「根」視圖控制器並從那裏呈現。

+0

好吧..哇我沒有意識到它已在導航控制器的根來呈現。無論如何要從這個視圖控制器回調到根目錄嗎?它可能至少有3-4個VC。 – Alan 2013-05-10 21:13:27

+0

的UIViewController的便利方法可能會無法處理您的層次結構,如果它是複雜,所以你需要在把東西自己處理導航。 – Wain 2013-05-10 21:17:05

+0

所以我創建了一個NSNotification以便它會通知我想要顯示的電子郵件的形式根控制器。它現在有效!希望這是最有效的解決方案。謝謝你的幫助! – Alan 2013-05-10 21:26:53

0

這聽起來像它可能是爲改變簡單:

[self presentViewController:controller animated:YES completion:^{}]; 

[self.navigationController presentViewController:controller animated:YES completion:^{}]; 

希望這有助於你。

+0

...沒有工作。這可能是因爲視圖控制器被埋在根的下三級。 – Alan 2013-05-10 21:14:15