我可以设置UITextField以在按下Return时触发UIBarButtonItem的操作

时间:2014-05-10 18:12:38

标签: ios objective-c uinavigationcontroller uitextfield uibarbuttonitem

我已完成教程项目,该项目是Apple Dev Center的“Start Developing iOS Apps Today”指南的一部分。该项目构建了一个简单的2视图待办事项列表应用程序。主视图是待办事项列表,第二个视图使用文本字段添加新的待办事项。视图由导航控制器链接。

目前,用户通过在文本字段中输入项目并按“完成”UIBarButtonItem来添加项目。我想设置它,所以在文本字段中按回车键会触发与按“完成”相同的操作。

我在StackOverflow和其他地方搜索过,我查看了相关的Apple文档,我无法弄清楚如何制作看似简单的连接。所以我想知道Done按钮是否是触发Segue和UnwindToList的导航控件的事实意味着我无法轻松将其链接到Return键。

根据我在这里找到的答案,我将ViewController设置为文本字段的委托:

(在.h文件中)

@interface XYZAddToDoItemViewController : UIViewController <UITextFieldDelegate>

(在.m文件中)

self.textField.delegate = self;

我添加了功能

- (BOOL)textFieldShouldReturn:(UITextField *)textField {

}

但我无法弄清楚如何使用该功能触发完成按钮按下事件。视图控制器有一个PrepareForSegue方法,它检查文本字段并将数据保存在其中,因此我可能必须调用该方法然后启动segue,但我无法弄清楚如何手动执行,因为导航控制器通常处理它。

1 个答案:

答案 0 :(得分:0)

如果我正确读到这个问题,那么你遇到的问题就是“完成”。按钮是导航栏中的UIBarButton项目,由UINavigationController处理,因此您没有任何代码可以解雇,因此如何将返回事件与文本字段绑定(你正确地确定了方法)。是吗?

如果是这样的话......您需要添加一种方法来手动执行“完成”操作。按钮自动完成。 这取决于原始演示文稿的发生方式。 一种方法是查看展开segue选项。 但是在短期内,添加它并从textFieldShouldReturn方法中调用它......

- (void)manualDoneAction {
   [self.navigationController popViewControllerAnimated:YES];
}

发布您的搜索结果,如果没有帮助,我会看到其他可能会有效。