我有一個「添加聯繫人」按鈕,當我在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;
}
我已經實現了-popoverControllerShouldDismissPopover,如OP所述,但控制似乎從來沒有進入到這裏。我的意思是自我(c#背景) – mizzle 2010-10-01 12:06:26
你是否將對象設置爲'UIPopoverControllerDelegate'? – 2010-10-01 12:11:17
@nevan是的。這是我想要引起解僱的流行之外的一個觸碰。 – mizzle 2010-10-01 15:12:15