2010-09-30 52 views
0

我有一個「添加聯繫人」按鈕,當我在iPhone上呈現一個帶有ABNewPersonController的根視圖控制器的導航控制器。當使用ABNewPersonViewController時關閉UIPopoverController

如果在iPad上我有一個彈出窗口,可以在裏面顯示新的人員控制器 - 很好。

試圖解僱時出現問題。

我可以在接觸完成時忽略彈出窗口或在我的didCompleteWithNewPerson實現中取消使用;

if(self.popoverController != nil) 
    [popoverController dismissPopoverAnimated:YES]; 

然而,酥料餅以外觸摸時這並沒有消除。

我已經爲我的popoverControllerShouldDismissPopover方法返回YES,並將我的彈出窗口的代理設置爲this。我已經把NSLOG放在這個方法裏面了,它不會在那裏丟失 - 我錯過了什麼?

有沒有人知道如何解除接觸外界時的彈出?

更新 - 更多的代碼

-(IBAction)contactsClicked:(id) sender{ 

    ABNewPersonViewController *newPersonView = [[ABNewPersonViewController alloc] init]; 
    [newPersonView setNewPersonViewDelegate:self]; 
    [newPersonView setDisplayedPerson:newPerson]; 

     UINavigationController *addContactNavController = [[UINavigationController alloc] initWithRootViewController:newPersonView]; 
     [newPersonView release]; 


     if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 

      if(self.popoverController == nil){ 
       UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:addContactNavController]; 

       self.popoverController = popover; 
       self.popoverController.delegate = self; 
       [popover release]; 
      } 
      CGRect frame = [sender frame]; 
      [popoverController presentPopoverFromRect:frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES]; 
     } else { 
      [self presentModalViewController:addContactNavController animated:YES]; 
      [addContactNavController release]; 
     } 
    } 
-(void)unknownPersonViewController:(ABUnknownPersonViewController *)unknownPersonView didResolveToPerson:(ABRecordRef)person{ 
    [self dismissModalViewControllerAnimated:YES]; 
} 
-(void)newPersonViewController:(ABNewPersonViewController *)newPersonViewController didCompleteWithNewPerson:(ABRecordRef)person { 
    NSLog(@"DONE OR CANCEL clicked!!!!"); //prints 
    if (self.popoverController != nil) { 
     [popoverController dismissPopoverAnimated:YES]; 
    } 
    [self dismissModalViewControllerAnimated:YES]; 
} 

的完成和取消新人控制器工作的按鈕,(在iPad上運行時)駁回控制器和酥料餅。我想這意味着ABNewPersonViewController的委託是正確實現的。 (?)

我猜我可能會混淆問題,因爲有多個控制器和我的popover委託方法變得隱藏或什麼?

在此先感謝

編輯 - 委託方法

-(BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)thePopoverController{ 
    NSLog(@"clicked outside the popover");//never prints 
    return YES; 
    } 

回答

0

從文檔:

的酥料餅的窗口內

絲錐不會自動導致酥料餅被解僱。您的視圖和視圖控制器代碼必須明確處理彈出窗口中的動作和事件,並根據需要調用dismissPopoverAnimated:方法。

您應該使用popover委託方法–popoverControllerShouldDismissPopover:來偵聽它將要被解僱的時間並在那裏進行保存等。您也可以使用self而不是this

+0

我已經實現了-popoverControllerShouldDismissPopover,如OP所述,但控制似乎從來沒有進入到這裏。我的意思是自我(c#背景) – mizzle 2010-10-01 12:06:26

+0

你是否將對象設置爲'UIPopoverControllerDelegate'? – 2010-10-01 12:11:17

+0

@nevan是的。這是我想要引起解僱的流行之外的一個觸碰。 – mizzle 2010-10-01 15:12:15

相關問題