gpt4 book ai didi

macos - NSResponder 在 acceptsFirstResponder 为 false 时接受事件?

转载 作者:行者123 更新时间:2023-11-28 11:14:30 24 4
gpt4 key购买 nike

为什么调用 moveLeft() 和 moveRight() 方法,我已经关闭了窗口 Controller 的第一响应者能力?我没有在其他地方添加任何代码,所以我显然在某处遗漏了一些东西......

最后我确实想接受事件,但如果我在这里“启用”它们并处理覆盖 keyEvent(),它会导致它被处理两次并做出两次选择。

import Cocoa

enum UserChoice {
case Left, Right
}

class MainWindowController: NSWindowController {

override func windowDidLoad() {
super.windowDidLoad()
}

override var windowNibName: String? {
return "MainWindowController"
}

override var acceptsFirstResponder: Bool {
return false
}

override func moveLeft(sender: AnyObject?) {
chooseImage(UserChoice.Left)
}

override func moveRight(sender: AnyObject?) {
chooseImage(UserChoice.Right)
}

func chooseImage(choice: UserChoice) {
print("choice made")
}

}

我唯一拥有的其他文件是 AppDelegate.swift:

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

var mainWindowController: MainWindowController!

func applicationDidFinishLaunching(notification: NSNotification) {
mainWindowController = MainWindowController()
mainWindowController.showWindow(self)
}

}

也欢迎对我的代码提出任何意见,我是 Swift/Cocoa 的新手,所以...

最佳答案

当您的 Controller 拒绝成为第一响应者时,它仍然是响应者,只是不是第一响应者。另一个响应者(例如窗口或其中的 View )可以选择将责任推回响应者链。

如果您不想处理它们,我不清楚为什么要实现 moveLeftmoveRight

关于macos - NSResponder 在 acceptsFirstResponder 为 false 时接受事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32724901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com