在开发一个新应用程序时,我遇到了与取消选择输入到 nstextfield 中的文本有关的相同问题:http: //www.cocoabuilder.com/archive/cocoa/195313-nstextfield-how-to-取消选择-text.html
围绕 SO 有很多关于使用 NSTextViews 执行此操作的问题,但我无法找到 NSTextFields 的有效答案。
在我的项目中,我有一个带有文本字段的窗口,其中有一个控制器类,它也是文本字段的委托。我有一个用于输入时发送的文本字段的 IBAction,它根据字段中的文本执行操作,以及:
(void)controlTextDidChange:(NSNotification *)note
和
(BOOL)control:(NSControl *)control
textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector
它处理一些自定义自动完成,如Suppressing the text completion dropdown for an NSTextField的答案
我的问题在于当我按 Enter 提交输入的文本时,字段中的字符串被完全选中,但我希望能够取消选择文本并将插入点放在末尾,如第一个链接中所述。
我可以在多个地方取消选择文本,但实际上取消选择不起作用。我已尝试按照第一个链接中的说明获取字段编辑器,我也尝试使用 controlTextDidEndEditing: 方法,因为我确实在上面的 controlTextDidChange: 方法中获得了字段编辑器:
- (void)controlTextDidEndEditing:(NSNotification *)note{
NSTextView *textView = [[note userInfo] objectForKey:@"NSFieldEditor"];
[textView setSelectedRange:NSMakeRange([[self.ParseField stringValue]length]-1, 0)
affinity:NSSelectionAffinityUpstream
stillSelecting:NO];
}
我还尝试在现场禁用和重新启用编辑,但这也不起作用。
能够向文本字段发送 moveDown: 消息这样简单的事情对我有用,因为它与点击向下箭头相同,但文本字段无法识别该选择器。(我认为 NSTextField 继承自 NSResponder,所以它会起作用,但我猜不是?)
感谢您的任何帮助

