tob*_*fin 5 macos cocoa appkit
例外情况是"NSWindow:-_oldFirstResponderBeforeBecoming不是响应者执行-becomeFirstResponder之外的有效消息." 然而,根据堆栈跟踪信息是从所谓的becomeFirstResponder,所以我不知道我做错了.这是间歇性错误.
用户按下键命令序列,该键命令序列触发菜单项,该菜单项向键窗口控制器发送消息,该键控窗口控制器告知窗口上的搜索字段成为第一响应者.
这是一个汇总的堆栈跟踪::
[NSException raise:format:]
[NSWindow _oldFirstResponderBeforeBecoming]
[NSSearchField becomeFirstResponder]
[MyWindowController focusSearchField]
[NSApplication sendAction:to:from:]
[NSMenu performKeyEquivalent:]
Run Code Online (Sandbox Code Playgroud)
窗口控制器的动作实现非常简单:
public var searchField: NSSearchField?
@IBAction public func focusSearchField(sender: AnyObject) {
searchField?.becomeFirstResponder()
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
我在这里找到了解决方案.
而不是使用becomeFirstResponder,你应该使用NSWindow的makeFirstResponder方法.
public var searchField: NSSearchField?
@IBAction public func focusSearchField(sender: AnyObject) {
searchField?.window?.makeFirstResponder(searchField!)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
549 次 |
| 最近记录: |