在 UINavigationItem 中时,UITextField 无法退出其键盘

UITextField cannot resign its keyboard when inside UINavigationItem

所以我通过这样的方法在我的视图控制器中实现了一个自定义导航项

-(UINavigationItem*)navigationItem{
    item = [[SearchNavigationItem alloc] init];
    item.delegate = self;
    return item;
}

SearchNavigationItem会自行设置,添加一个UITextField等等。

field.delegate 将项目作为委托。

所以我遇到的问题是,当我尝试获取字段的文本时,它是零。但是当 "textfield changed" 被调用时,我可以通过参数 (textFieldDidChange:UITextField*) 访问该字段并且它有文本。

另一个问题,如标题,是当我这样做时[field resignFirstResponder]没有任何反应。

好的,我已经有了答案,我写这个问题是因为我个人在修复它时找不到任何帮助。


所以问题是 navigationItem 可以多次调用,这会不断创建新的柱。

所以解决方案简单地说就是:

-(UINavigationItem*)navigationItem{
    // Apparently it should be treated as a 'singleton' which I think it says
    // kind of in the documentation. This comment is just to reinforce that
    // it burned me to init it each time this method is called. Which is can
    // be multiple times and also outside of the class itself (like when nav'ing)
    if(item == nil){
        item = [[SearchNavigationItem alloc] init];
        item.delegate = self;
    }
    return item;
}

希望这对其他人有帮助。