【发布时间】:2011-07-02 09:58:38
【问题描述】:
我有一个文本字段和两个按钮。用户应该能够在编辑完文本字段后按回车键,然后根据条件再次返回以激活其中一个或另一个按钮。为了让用户清楚他们可以返回来激活按钮,我暂时将返回指定为所选按钮的等效键,这应该使它发出蓝色光。
文本字段的发送操作选择器包含以下代码:
switch (self.iNavMode) {
case kNavModeNeutral:
break;
case kNavModeSaveAndNew:
[self.window makeFirstResponder:self.btnSaveAndNew];
[self.btnSaveAndNew setKeyEquivalent:@"\r"];
break;
case kNavModeSaveAndNext:
[self.window makeFirstResponder:self.btnSaveAndNext];
[self.btnSaveAndNext setKeyEquivalent:@"\r"];
break;
default:
break;
}
然后,所选按钮的操作会敲除等效键,因此该按钮在退出 firstResponder 后不会继续发出蓝色光:
[self.btnSaveAndNext setKeyEquivalent:@""];
问题在于,当用户从文本字段中返回时,返回键事件以某种方式被捕获了两次,并且程序自己激活了按钮,即使用户实际上并没有再次按下返回。
有没有一种方法可以完全捕获和处理第一个返回键事件,这样就不会发生这种情况?
【问题讨论】:
-
我也发现了这个问题——结果发现更改 IB 检查器面板中的“发送操作”菜单项没有任何效果。我不得不手动调用
[self.searchTextField.cell setSendsActionOnEndEditing:NO]以避免我的操作两次。 -
谢谢。这可能是比我接受的答案更好的解决方案。
标签: objective-c nstextfield keyboard-navigation