NSSearchField 偶尔会导致 NSInternalInconsistencyException
NSSearchField occasionally causing an NSInternalInconsistencyException
异常是 "NSWindow: -_oldFirstResponderBeforeBecoming is not a valid message outside of a responder's implementation of -becomeFirstResponder." 但是,根据堆栈跟踪消息 是 从 becomeFirstResponder
调用的,所以我不知道我是什么做错了。这是间歇性错误。
用户按下一个键命令序列,这将触发一个菜单项,该菜单项向键 window 控制器发送一条消息,通知 window 上的搜索字段成为第一响应者。
这是一个总结堆栈跟踪::
[NSException raise:format:]
[NSWindow _oldFirstResponderBeforeBecoming]
[NSSearchField becomeFirstResponder]
[MyWindowController focusSearchField]
[NSApplication sendAction:to:from:]
[NSMenu performKeyEquivalent:]
window控制器动作的实现非常简单:
public var searchField: NSSearchField?
@IBAction public func focusSearchField(sender: AnyObject) {
searchField?.becomeFirstResponder()
}
感谢您的帮助。
我找到了解决方案 here。
您应该使用 NSWindow
的 makeFirstResponder
方法,而不是使用 becomeFirstResponder
。
public var searchField: NSSearchField?
@IBAction public func focusSearchField(sender: AnyObject) {
searchField?.window?.makeFirstResponder(searchField!)
}
我在带有文本框的 NSPopover 中遇到了这个问题。当我删除它时,我没有将 contentViewController 设置为 nil 并且它没有解除分配。当我试图打开另一个弹出窗口时发生了异常,我知道这是因为第一响应者从不在 window
中的视图中辞职了
异常是 "NSWindow: -_oldFirstResponderBeforeBecoming is not a valid message outside of a responder's implementation of -becomeFirstResponder." 但是,根据堆栈跟踪消息 是 从 becomeFirstResponder
调用的,所以我不知道我是什么做错了。这是间歇性错误。
用户按下一个键命令序列,这将触发一个菜单项,该菜单项向键 window 控制器发送一条消息,通知 window 上的搜索字段成为第一响应者。
这是一个总结堆栈跟踪::
[NSException raise:format:]
[NSWindow _oldFirstResponderBeforeBecoming]
[NSSearchField becomeFirstResponder]
[MyWindowController focusSearchField]
[NSApplication sendAction:to:from:]
[NSMenu performKeyEquivalent:]
window控制器动作的实现非常简单:
public var searchField: NSSearchField?
@IBAction public func focusSearchField(sender: AnyObject) {
searchField?.becomeFirstResponder()
}
感谢您的帮助。
我找到了解决方案 here。
您应该使用 NSWindow
的 makeFirstResponder
方法,而不是使用 becomeFirstResponder
。
public var searchField: NSSearchField?
@IBAction public func focusSearchField(sender: AnyObject) {
searchField?.window?.makeFirstResponder(searchField!)
}
我在带有文本框的 NSPopover 中遇到了这个问题。当我删除它时,我没有将 contentViewController 设置为 nil 并且它没有解除分配。当我试图打开另一个弹出窗口时发生了异常,我知道这是因为第一响应者从不在 window
中的视图中辞职了