objective-c - 如何在单击按钮时从文本字段中删除光标?

标签 objective-c cocoa nstextfield

我正在尝试执行一项简单的任务:

我有一个可编辑的文本字段,窗口上方有两个按钮(标题:使可编辑/使不可编辑)。想法是:当用户单击“使可编辑”按钮时,文本字段应变为可编辑,当他/她单击“使不可编辑”时,文本字段应变为不可编辑。

在“使其不可编辑”的操作中,我正在这样做:

[myTextField setSelectable:NO];
[myTextField setEditable:NO];

在“使可编辑”的行动中,我正在这样做:

[myTextField setSelectable:YES];
[myTextField setEditable:YES];

问题是:

当 myTextField 中没有光标或有光标但用户未在其中键入任何内容并单击 - “使不可编辑”时,它工作正常,然后 myTextField 变得不可编辑,但当它有光标并且用户单击时在其中输入内容后,“使其不可编辑”,他/她仍然可以编辑 myTextField。

对于其解决方案,我尝试在用户单击“使其不可编辑”按钮后立即从 myTextField 中删除光标,方法是在可选择和可编辑语句之前添加这些行:

  1. [someOtherTextField selectText:self];

  2. [[NSRunLoop currentRunLoop] 执行选择器:@selector(selectText:) 一些其他文本字段 论据: self 订单:9999 模式:[NSArray arrayWithObject:NSDefaultRunLoopMode]];

  3. [someOtherTextField成为FirstResponder];

但没有一个对我有用:(

有人可以建议一些解决方案吗?

最佳答案

becomeFirstResponder 的文档说

Use the NSWindow makeFirstResponder: method, not this method, to make an object the first responder. Never invoke this method directly.

我不确定隐藏文本字段是否可以成为第一响应者,所以请尝试:

[[myTextField 窗口] makeFirstResponder: nil]

关于objective-c - 如何在单击按钮时从文本字段中删除光标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2941864/

相关文章:

objective-c - 多播委托(delegate) - 多个类从 iOS 中的 UI 控件接收通知

iphone - 保存用相机拍摄的图像或从相机胶卷中选择的图像时出现长时间延迟 - iPhone

objective-c - 向 NSTableView 添加行不会更改其框架

objective-c - NSTextField子类textDidEndEditing : Deleting Text

cocoa - 无法从 NSTextField 成功注册撤消

ios - watchOS 通知可以显示自定义嵌入字体吗

objective-c - 如何比较对象属性然后使用 ( sortusingselector :@selector)?

objective-c - Objective c NSURL 可能不会响应 +initFileURLWithPath

cocoa - 访问 NSCollectionView View 的控件

xcode - 无法更改工作表上的文本标签