I'm writing a small menubar application for OS X Yosemite. When clicking on the menubar icon, a popover appears with a number of recessed buttons. Like so:
正如您所看到的,尽管默认选择 d20,但“d4”按钮已获得焦点。单击任何其他按钮不会改变“d4”按钮的焦点。移动对焦环的唯一方法是通过 Tab 键。
这是弹出视图控制器中的我的代码:
import Cocoa
class DiceRollerViewController: NSViewController {
var result: Int = 0
var currentNumberOfSides = 20
@IBOutlet weak var rollButton: NSButton!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func sidesButtonSelected(sender: NSButton?) {
for view in self.view.subviews as [NSView] {
if let btn = view as? NSButton {
if btn.tag == 1 {
if btn != sender {
btn.state = 0
}
else {
btn.state = 1
}
}
}
}
}
@IBAction func rollDice(sender: AnyObject?) {
willChangeValueForKey("result")
result = DiceRoller.rollDice(numberOfRolls: 1, numberOfSides: 20)
didChangeValueForKey("result")
}
}
以及相关的AppDelegate代码:
func showPopover(sender: AnyObject?) {
if let button = statusItem.button {
popover.showRelativeToRect(button.bounds, ofView: button, preferredEdge: NSRectEdge.MinY)
}
}
总而言之,我试图去掉单击弹出窗口时自动出现的聚焦环。但是,出于可访问性的原因,我不想删除通过选项卡聚焦的功能。
尝试覆盖viewWillAppear()
做出“滚!”通过执行以下操作来按钮第一响应者:
if theRollButton.acceptsFirstResponder {
self.view.window.makeFirstResponder(theRollButton)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)