【问题标题】:Changing Tab-Order (Focus) in a cocoa-App在可可应用程序中更改标签顺序(焦点)
【发布时间】:2017-03-23 11:50:36
【问题描述】:

我有一个包含 4 个文本字段 tf1 - tf4 的简单视图。

我想将初始焦点设置在 tf2 上,效果很好。

然后我想要 tf1 获得焦点,然后再次获得 tf2 - 这不起作用,焦点在所有 4 个文本字段中循环。

我试过这样:

override func viewWillAppear()
{ super.viewWillAppear()
  tf2.becomeFirstResponder()

  tf2.nextKeyView = tf1
  tf1.nextKeyView = tf2
}

我的错误在哪里?

【问题讨论】:

  • 不要打电话给becomeFirstResponder。 “使用 NSWindow makeFirstResponder: 方法,而不是这个方法,使一个对象成为第一响应者。永远不要直接调用这个方法。”
  • 将窗口的initialFirstResponder设置为tf2
  • 设置 NSWindows firstResponder 的最佳位置是什么? viewWillAppear 也可以吗?如何在视图控制器中获取窗口?
  • 谢谢!!
    使用:self.view.window!.initialFirstResponder = tf2 它工作正常

标签: swift cocoa focus responder-chain


【解决方案1】:

感谢@Willeke:

它适用于:

override func viewWillAppear()
{ super.viewWillAppear()
  tf2.nextKeyView = tf1
  tf1.nextKeyView = tf2      
  self.view.window!.initialFirstResponder = tf2
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多