夸大其词,不要去碰使用方法:
[picker setAllowsCancel:NO];
它是苹果的私有的API(非公开),他们会拒绝你的应用程序。
ABPeoplePickerNavigationController *tempABPNC = [[ABPeoplePickerNavigationController alloc] init];
tempABPNC.peoplePickerDelegate = self;
tempABPNC.delegate = self;
[self presentModalViewController:tempABPNC animated:YES];
[tempABPNC release];
您必须添加 “tempABPNC.delegate =自我;” 再执行UINavigationControllerDelegate方法:
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
viewController.title = @"选择联系人";
tinlnTempVC = viewController;
viewController.navigationItem.leftBarButtonItem = nil;
UIViewController *tempABVC = [navigationController.viewControllers lastObject];
tempABVC.title = @"选择联系人";
if([viewController.view.subviews count]==0){ //if user disable app open contact,you can create your own view,
UIView *tempV=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, IS_IPHONE5 ? 504 : 416)];
...
...
viewController.view = tempV;
[tempV release];
}}
在这个视图 - 控制,子类的ABPeoplePickerNavigationController,所以我们可以用我们自己的按钮替换navigationleft,右,backitem
static UIViewController *tinlnTempVC;
@implementation ABPeoplePickerNavigationController (tinlnCustom)
- (void)viewWillLayoutSubviews{
if ([[[UIDevice currentDevice] systemVersion] floatValue] < 5.0)
return;
UIButton *dismisBtn = [UIButton DIYNavigationBarItemBtnWithTitle:@"返 回" NC:tinlnTempVC.navigationItem];
[dismisBtn addTarget:self action:@selector(backToPayPhone) forControlEvents:UIControlEventTouchUpInside];}
- (void)backToPayPhone{
[self dismissModalViewControllerAnimated:YES];}
@end
的希望帮助你,咆哮,这种方法的iOS 5.0-6.1运行完美,在iOS的4.3-5.0的backitem水湿在第t更换ime show。