- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 NSToolbar
中有一个 NSSearchField
,我试图将其设置为 makeFirstResponder
,但它会间歇性地工作。有时 NSSearchField
将成为第一响应者而不调用 makeFirstResponder
并且 makeFirstResponder
返回 true
就好像它已设置成功。设置 NSWindow.initialFirstResponder
也失败了。
class ViewController: NSViewController {
override func viewDidAppear() {
super.viewDidAppear()
view.window?.makeFirstResponder(view.window?.windowController?.searchField
}
}
我通过使用计时器延迟代码获得了一致的工作结果,但这是一个不太理想的解决方案。
class ViewController: NSViewController {
override func viewDidAppear() {
super.viewDidAppear()
Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { _ in
self.view.window?.makeFirstResponder(self.windowController?.searchField)
}
}
}
最佳答案
如果 makeFirstResponder
返回 true
,那么它可能至少在短时间内成为第一响应者。
您可以使用 NSWindow.firstResponder
符合 KVO 的事实,以便通过您的 ViewController
类中的以下代码来检测对其的任何更改:
override func viewDidAppear() {
super.viewDidAppear()
self.view.window?.addObserver(self, forKeyPath: "firstResponder", options: [.initial, .new], context: nil)
self.view.window?.makeFirstResponder(self.windowController?.searchField)
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "firstResponder" {
print("First responder of window: \(object) is \(change?[NSKeyValueChangeKey.newKey])")
}
}
关于swift - makeFirstResponder 并不总是触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55719308/
我在 NSToolbar 中有一个 NSSearchField,我试图将其设置为 makeFirstResponder,但它会间歇性地工作。有时 NSSearchField 将成为第一响应者而不调用
我对 cocoa 编程相当陌生,我想问是否有人可以向我解释如何-(BOOL)makeFirstResponder:(NSResponder *)responder; 方法有效。我计划将它用于 NSEv
当我使用键盘快捷键或点击状态栏中的图标来显示我的应用程序时,我设置了第一响应者。 makeFirstResponder: 始终成功(返回 true)并带有非零窗口和非零 NSTextField。然而,
我创建了一个基于 feed 的 TableView ,该 feed 本质上包含许多表单类型元素。简单地认为它包含两种类型的元素文本框和消息。文本框类型单元格应包含 UITextFields,消息类型单
在下面的代码中,我使用 NSWindow 和 NSOpenGLView 初始化一个 NSViewController [a NSResponder],呈现 View 并尝试将 NSViewContro
我是一名优秀的程序员,十分优秀!