iPhone: ABPeoplePickerNavigationController 隐藏导航栏

6

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

peoplePickerController.navigationBar.hidden = YES;

这个功能可以完美地工作,唯一的问题是当用户点击搜索框以搜索某个人时,当他从搜索返回时,navigationBar会重新显示出来。

我该如何获得通知并使navigationBar再次隐藏?

我认为这是苹果的一个漏洞,因为在正常情况下,当点击搜索时,navigationBar会被隐藏以腾出更多空间,稍后会再次显示,但它没有考虑到navigationBar可能在第一次隐藏时就已隐藏。

欢迎任何技巧。

2个回答

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
1
非常感谢。正如其他评论者所提到的,这确实是一个错误,应该向苹果报告(最好包括一个简单的测试项目)。 - rpetrich

3
如果您认为这是一个错误,您应该将其提交到http://bugreporter.apple.com
对我来说,这也听起来像是一个错误,但我会仔细查阅文档以确保。如果文档中没有提到任何内容,则建议报告此错误。 编辑:另一方面,我认为在这里隐藏导航栏是不好的想法。是否有特定的原因要隐藏它?

1
我已经有另一个导航栏可以完成这个的功能了。这是因为我无法修改控制器附带的那个,不能修改ABPeoplePickerNavigationController的使用真的很烦人。 - daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接