UITextField在UINavigationItem内部时无法重新键入其键盘

时间:2016-04-19 09:17:26

标签: ios objective-c delegates uitextfield uinavigationitem

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

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

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

field.delegate将该项目作为代理人。

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

另一个问题,就像标题一样,当我做[field resignFirstResponder]时没有发生任何事情。

1 个答案:

答案 0 :(得分:0)

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

所以问题是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;
}

希望这有助于其他人。

相关问题