2009-07-12 155 views
6

你好我有一个ABPeoplePickerNavigationController,在创建时将其设置为 navigationBar隐藏。IPHONE:ABPeoplePickerNavigationController隐藏导航栏

peoplePickerController.navigationBar.hidden = YES; 

这工作完全是,当用户点击搜索框 搜索一个人,因为他从搜索返回的,被重新显示的导航栏唯一的问题,。 我该如何得到这个通知,并再次隐藏navigationBar?

我也觉得这是一个苹果的错误,因为在当搜索被窃听常规情况下, 导航栏被隐藏,使更多的房间,后来显示的,但 它没有考虑到一个事实,即酒吧本来可以隐藏在 的第一位。

任何招数的欢迎。

回答

22

最安全和最简单的方法是跟踪键盘隐藏/显示的时间。

- (void)keyboardWillHide:(NSNotification *)notification 
{ 
    peoplePickerController.navigationBar.hidden = YES; 
} 

- (void)hideNavbarAndKeepHidden 
{   
    peoplePickerController.navigationBar.hidden = YES; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; 
} 

- (void)dealloc 
{ 
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 
    [super dealloc]; 
} 
+2

先生,你刚刚赢得了100个声望点,非常感谢:)。 – daniel 2009-07-19 19:13:55

3

如果您认为这是一个错误,您应该将其提交至http://bugreporter.apple.com

对我来说,这听起来像一个错误,但我会仔细检查文档以确保。如果它没有提到任何内容,那么我建议报告错误。

编辑:另一方面,我认为设置导航栏在这里隐藏是一个坏主意。是否有特别的理由要隐藏它?

+1

我已经有另一个导航栏已经在做这件事了。这是因为我无法修改控制器附带的那个,它真的很烦人,无法修改ABPeoplePickerNavigationController的用法。 – daniel 2009-07-14 02:35:08