首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSSearchField偶尔引起NSInternalInconsistencyException

NSSearchField偶尔引起NSInternalInconsistencyException
EN

Stack Overflow用户
提问于 2015-06-24 00:14:40
回答 2查看 963关注 0票数 5

例外是"NSWindow:-_oldFirstResponderBeforeBecoming不是响应程序实现-becomeFirstResponder之外的有效消息“。但是,根据堆栈跟踪,消息是从becomeFirstResponder调用的,所以我不知道自己做错了什么。这是一个间歇性的错误。

用户按下一个键命令序列,该命令序列触发菜单项,该菜单项向键窗口控制器发送消息,该窗口控制器通知窗口上的搜索字段成为第一个响应程序。

下面是一个简要的堆栈跟踪:

代码语言:javascript
复制
[NSException raise:format:]
[NSWindow _oldFirstResponderBeforeBecoming]
[NSSearchField becomeFirstResponder]
[MyWindowController focusSearchField]
[NSApplication sendAction:to:from:]
[NSMenu performKeyEquivalent:]

窗口控制器操作的实现非常简单:

代码语言:javascript
复制
public var searchField: NSSearchField?
@IBAction public func focusSearchField(sender: AnyObject) {
    searchField?.becomeFirstResponder()
}

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-07 20:19:16

我找到了一个解决方案,here

与其使用becomeFirstResponder,不如使用NSWindowmakeFirstResponder方法。

代码语言:javascript
复制
public var searchField: NSSearchField?
@IBAction public func focusSearchField(sender: AnyObject) {
    searchField?.window?.makeFirstResponder(searchField!)
}
票数 9
EN

Stack Overflow用户

发布于 2020-05-09 13:15:16

我在一个带有textfield的NSPopover中遇到了这个问题。当我删除它时,我没有将contentViewController设置为零,也没有将其解除。当我试图打开另一个破例的时候,我知道这是因为第一个响应者是从一个没有窗户的视野中辞职的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31015568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档