objective-c - NSTextField 设置启用

标签 objective-c cocoa

我的窗口中有一个 NSTextField 对象,单击复选框时必须禁用该对象。

我编写了一个 IBAction 来接收复选框单击并根据复选框状态禁用/启用文本字段。

[mName setEnabled: [mNameCheck state]];

这可以很好地实现基本功能,但我发现了一些奇怪的行为。

您更新了文本字段中的一些详细信息,然后单击文本字段中的复选框以禁用旧内容。

示例:

  • 第 1 阶段:提交的文本包含内容 “姓名”
  • 第 2 阶段:更新提交的文本 内容为“Girish”
  • 第 3 阶段:单击复选框(以禁用 提交的文本)
  • 第 4 阶段:禁用文本字段 内容为“名称”

如果我在禁用文本字段之前退出响应程序并将响应程序设置为其他 Controller ,问题就会得到解决。

就我而言,我无法将响应者分配给复选框(它不需要)或任何其他 Controller ,所以我做了一些像下面这样工作正常的事情

[mName resignFirstResponder];
[mName becomeFirstResponder];

辞职并为响应者分配同一控制者。

我只是想知道这个解决方案是否正确或者是否有更好的解决方案?

最佳答案

正如文档所述,不要直接调用 -resignFirstResponder-becomeFirstResponder。改为调用 -[NSWindow makeFirstResponder:] 。传入 nil 是可以接受的,状态将传递到窗口本身。

您可以尝试调用 -[NSWindow selectNextKeyView:] 虽然我不完全确定如果找不到有效的下一个关键 View 会发生什么。尝试一下看看。如果这不起作用,您将不得不自行调用 -nextValidKeyView-makeFirstResponder

关于objective-c - NSTextField 设置启用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2271908/

相关文章:

objective-c - 从 NSString 获取长值

database - 如何获得对沙盒应用程序内资源中数据库的读/写访问权限?

objective-c - 带有文件内容的数组 : results in crash

objective-c - 如何从旨在支持 COCOA 下构建的 GUI 的主 NSWindow 控制位于专用 NSWindow 中的 NSView?

ios - 中心 didReceiveNotificationResponse 没有被调用

cocoa - 我可以在不中断焦点的情况下结束字段编辑器控制的编辑吗?

objective-c - UILabel 在 UISlider 拇指上

iphone - 在搜索方法迭代完成后重新加载/显示 UISearchDisplayController 的 searchResultsTableView

ios - 在后台创建的 NSManagedObject 在主线程上变成错误

iphone - 在我的 iPhone 应用程序中, View 未相对于设备方向旋转