我正在使用 Xcode 7.3 构建 OS X 桌面应用程序,并尝试为其中一个表单设置 Tab 键顺序。
我发现有几篇文章解释了 Xcode 4 的类似问题,但没有任何进展,https://www.youtube.com/watch ?v=SRrE8eqp0dU
我试图解决的基本问题是,当用户位于字段和选项卡中时,我希望它切换到下面的字段,而不是旁边的字段,等等。
查看文档,它提到连接 nextKeyView,以便它知道在旁边的位置选项卡,因此我使用 Interface Builder 为每个字段连接 nextKeyView 以指向正确的字段,但没有执行。
我想我需要设置 initialFirstResponder 但不确定在哪里连接它?
它并没有真正附加到单独的视图,所以有点丢失。
我在这里发布了我的源代码https://github.com/johnantoni/osx-tab-order
有什么想法和指示真的很受欢迎吗?
处于失败的结局。
小智 5
我检查了您的项目,非常好,您将其包含在内。它让 AppKit 的使用变得更加容易。我绝不是 AppKit 方面的专家,坦率地说,我已经很多年没有接触过它了,但经过一些努力,我设法让它发挥作用。
看起来您看到的问题是由于(自动)重新计算键视图循环造成的。我不得不用 hack 来禁用它,一定有更好的方法,但我找不到。
class MyWindow: NSWindow {
override func recalculateKeyViewLoop() {
// Remove. nextKeyView and makeFirstResponder seemed broken with this
}
}
Run Code Online (Sandbox Code Playgroud)
摆脱重新计算后,您可以将初始响应者设置为:
override func viewWillAppear() {
view.window?.makeFirstResponder(aField)
}
Run Code Online (Sandbox Code Playgroud)
如果您在 Interface Builder 中正确设置了所有 nextKeyViews,现在可以使用 Tab 键切换。
也可以通过编程方式完成设置,如下所示:
override func viewDidLoad() {
super.viewDidLoad()
aField.nextKeyView = bField
bField.nextKeyView = cField
cField.nextKeyView = dField
dField.nextKeyView = aField
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,标识符aField等bField是 ViewController 中的出口。您可以通过将控件从字段拖动到视图控制器并命名来添加一个。
这不是一个完美的解决方案,但我希望这会有所帮助。
| 归档时间: |
|
| 查看次数: |
1810 次 |
| 最近记录: |