我正在使用XCode 7.3构建一个OSX桌面应用程序,而我正在尝试为其中一个表单设置Tab键顺序。
我发现了一些帖子,解释了XCode 4的类似问题,但没有随处可见,https://www.youtube.com/watch?v=SRrE8eqp0dU
我试图修复的基本问题是,当用户在某个字段和标签中时,我希望它标签到下面的字段,而不是旁边的字段,依此类推。
通过文档查看它提到连接nextKeyView所以它知道旁边的选项卡的位置,所以我使用Interface Builder为每个字段连接nextKeyView指向正确的但没有去。
我想我需要设置initialFirstResponder但不确定在哪里连线?
它并没有真正附加到单独的视图,所以有点丢失。
我已在此处发布了我的源代码https://github.com/johnantoni/osx-tab-order
任何想法和指示真的很受欢迎吗?
输了。
答案 0 :(得分:2)
我检查了你的项目,非常好,你把它包括在内。它使AppKit更容易玩。我绝不是AppKit的专家,我坦白地说多年来没有触及过它,但我努力使其成功。
您看到的问题看起来是因为(自动)重新计算Key View Loop。我不得不用黑客禁用它,必须有更好的方法,但我找不到一个。
class MyWindow: NSWindow {
override func recalculateKeyViewLoop() {
// Remove. nextKeyView and makeFirstResponder seemed broken with this
}
}
在完成重新计算后,您可以将初始响应者设置为:
override func viewWillAppear() {
view.window?.makeFirstResponder(aField)
}
如果您已在Interface Builder中正确设置了所有nextKeyViews,则Tabbing现在可用。
也可以通过编程方式完成设置:
override func viewDidLoad() {
super.viewDidLoad()
aField.nextKeyView = bField
bField.nextKeyView = cField
cField.nextKeyView = dField
dField.nextKeyView = aField
}
在上面的代码中,标识符aField
,bField
等是ViewController中的出口。您可以通过控件从字段拖动到视图控制器并命名它来添加一个。
不是一个完美的解决方案,但我希望这会有所帮助。
答案 1 :(得分:0)
在Xcode 11中,这对我而言不起作用,除非我将nasm boot.asm -f bin -o boot.bin
移至视图控制器生命周期的更深处。我使用了[BITS 16]
[ORG 0x7C00]
start:
mov SI, msg
call eachstring
jmp $
eachstring:
mov AL, [SI]
inc SI
OR AL, AL
je end
jne printchar
printchar:
mov AL, [SI];Parameter festlegen
mov AH, 0x0E;Opcode ein Zeichen auszugeben
mov BH, 0x00;Keine Seite
mov BL, 0x07
int 0x10
ret
end:
ret
msg db 'Hallo Welt', 0
TIMES 510 - ($ - $$) db 0;Füllt den restlichen Speicher
dw 0xAA55;Magic key
,但其他入口点也可以使用。
aField.nextKeyView = bField ...