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

标签 cocoa

有时强制结束当前正在进行的任何编辑是有意义的。例如,如果用户在我的文档的字段中输入值,然后单击预览窗口,或从菜单中选择“打印”或“保存”。

问题是,通过强制结束编辑(通过要求 NSWindow 让自己成为第一响应者,或者通过在窗口上调用 endEditingFor: ),第一响应者焦点不再位于有问题的字段上。在某些情况下,这会对用户造成干扰,因为所采取的操作是迭代的,并不意味着他们对文档的工作结束。

我解决这个问题的第一次尝试是注意当前的firstResponder是什么,然后在编辑结束后通过使用NSWindow的“makeFirstResponder:”来恢复它。这工作正常,但会产生不良效果,例如在 NSTextFields 上将字段编辑器中的选择重置为字符串内容的整个长度。

是否有一些技巧可以用来强制调用“endEditing”方法的整个系统,而根本不会中断当前的字段编辑器?

谢谢, 丹尼尔

最佳答案

为什么不使用原来的方法,同时记录选择范围的位置/内容,并在恢复第一响应者后恢复它?

关于cocoa - 我可以在不中断焦点的情况下结束字段编辑器控制的编辑吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/584903/

相关文章:

cocoa - 如何将 NSTextField 的值绑定(bind)到 NSObjectController 的内容而不出现错误?

objective-c - 使用多个 nsarraycontroller 更改选定对象

cocoa - 限制 Cocoa 中的滚动弹性(NSScrollView)

objective-c - 如何计算 PDF 文档中嵌入图像的分辨率 (DPI)?

macos - 从 NSButton 单击运行终端命令

macos - NSOutlineView 选择父级

objective-c - NSTextView 文本对齐

cocoa - NSPersistentStoreCoordinator数据库存储位置applicationSupportFolder问题

Objective-c 悬停时为 NSTextField 标签下划线

objective-c - NSView * 实例变量的 Obj-C 内存管理