cam*_*den 3 macos xcode nsbutton swift
我正在为OS X Yosemite编写一个小型菜单栏应用程序.单击菜单栏图标时,会出现一个带有多个凹陷按钮的弹出窗口.像这样:
如您所见,即使默认情况下选择了d20,"d4"按钮也会被聚焦.单击任何其他按钮不会更改"d4"按钮的焦点.移动聚焦环的唯一方法是通过Tab键.
这是来自popover视图控制器的代码:
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")
}
}
Run Code Online (Sandbox Code Playgroud)
以及相关的AppDelegate代码:
func showPopover(sender: AnyObject?) {
if let button = statusItem.button {
popover.showRelativeToRect(button.bounds, ofView: button, preferredEdge: NSRectEdge.MinY)
}
}
Run Code Online (Sandbox Code Playgroud)
总而言之,我正试图摆脱单击弹出框时自动出现的对焦环.但是,出于可访问性原因,我不想删除通过选项卡进行聚焦的功能.
谢谢!
Ken*_*ses 10
尝试重写viewWillAppear()以制作"Roll!" 通过执行以下操作来按下第一响应者
if theRollButton.acceptsFirstResponder {
self.view.window.makeFirstResponder(theRollButton)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3814 次 |
| 最近记录: |