我正在使用 Xcode 7.3 构建一个 OS X 桌面应用程序,我正在尝试为其中一个表单设置 Tab 键顺序。
我发现有几篇文章解释了 Xcode 4 的类似问题,但没有解决任何问题,https://www.youtube.com/watch?v=SRrE8eqp0dU
我要解决的基本问题是,当用户在一个字段和选项卡中时,我希望它跳转到下面的字段,而不是它旁边的字段,等等。
通过文档查看它提到连接 nextKeyView 以便它知道旁边的选项卡在哪里,所以我使用 Interface Builder 为每个字段连接 nextKeyView 以指向正确的字段但没有成功。
我想我需要设置 initialFirstResponder 但不确定在哪里连接它?
它并没有真正附加到单独的 View ,所以有点丢失。
我在这里发布了我的源代码 https://github.com/johnantoni/osx-tab-order
真的欢迎任何想法和指示吗?
两败俱伤。
最佳答案
我检查了您的项目,非常好,您将其包含在内。它使玩 AppKit 变得更容易。我绝不是 AppKit 方面的专家,坦率地说,我已经很多年没有接触过它了,但经过一些努力,我设法让它工作了。
看起来您所看到的问题是因为(自动)重新计算了 Key View Loop。我不得不用 hack 禁用它,一定有更好的方法,但我找不到。
class MyWindow: NSWindow {
override func recalculateKeyViewLoop() {
// Remove. nextKeyView and makeFirstResponder seemed broken with this
}
}
摆脱重新计算后,您可以将初始响应者设置为:
override func viewWillAppear() {
view.window?.makeFirstResponder(aField)
}
如果您在 Interface Builder 中正确设置了所有 nextKeyView,现在可以使用 Tab 键。
设置也可以通过编程方式完成:
override func viewDidLoad() {
super.viewDidLoad()
aField.nextKeyView = bField
bField.nextKeyView = cField
cField.nextKeyView = dField
dField.nextKeyView = aField
}
在上面的代码中,标识符aField
、bField
等是ViewController 中的outlet。您可以通过控制从字段拖动到 View Controller 并命名它来添加一个。
这不是一个完美的解决方案,但我希望这对您有所帮助。
关于swift - 尝试在 Xcode 中为 OS X App 设置选项卡顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39096382/