【发布时间】:2015-12-03 07:27:19
【问题描述】:
我在 NSPopover 中有一个 NSSearchField。单击 NSStatusBar 项时会打开此弹出框。
在我的 NSPopover 的视图控制器的 viewWillAppear() 中,我在我的 NSSearchField 上调用 self.view.window?.makeFirstResponder(searchField)。我希望这个搜索字段可以在弹出框出现时进行编辑。通过准备编辑,我的意思是用户不必在 NSSearchField 内单击即可开始输入。
此时,我的实现并不总是有效。有时,它会起作用,并且弹出框打开时搜索字段已准备好,光标闪烁。然而,大多数时候,尤其是当我在打开弹出框时在不同的应用程序中编辑文本时,必须单击 NSSearchField 才能进行编辑。
我已经对搜索字段进行了子类化并覆盖了它的 becomeFirstResponder() 方法,并且我可以确认它每次都会被调用。
当字段成为第一响应者时,为什么我不能从其他应用程序“窃取”编辑我的搜索字段的权利?这甚至可能吗?
【问题讨论】:
-
有可能,但不推荐;将焦点从另一个应用程序上转移开本质上就像恶意软件。
-
我明白你的意思。话虽如此,一些应用程序会这样做:如果您在文本字段中输入并打开消息应用程序,则您输入消息的 NSTextField 会自动编辑。也许这种行为只适用于 Apple?
-
通常它是一个应用程序的辅助工具,将被安装然后授予该类型行为的权限;并非 Apple 应用所独有。
标签: swift macos nstextfield first-responder nspopover