我有一个针对tvOS的小测试应用程序 - 带有两个按钮的白色背景。这些按钮是标准UIButton
s,除了设置标题文字和将titleColor
设置为黑色外,无需自定义。
我的UIButton
在聚焦时不会收到阴影(或任何动画)。如果我用UITextField
替换它们,它们会按预期获得默认的投影和动画。我可以通过添加目标并在选择目标时打印到控制台来确认执行按钮是否已成为焦点。
知道发生了什么事吗? Apple's documentation,this article和this answer都建议UIButton
应该像其他可聚焦元素一样自动接收默认焦点动画。这是一个我错过的错误吗?
相关代码:
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.whiteColor()
let button = UIButton()
button.setTitle("Button", forState: .Normal)
button.setTitleColor(UIColor.blackColor(), forState: .Normal)
button.frame = CGRectMake(500, 500, 300, 100)
view.addSubview(button)
let button2 = UIButton()
button2.setTitle("Button2", forState: .Normal)
button2.setTitleColor(UIColor.blackColor(), forState: .Normal)
button2.frame = CGRectMake(900, 500, 300, 100)
view.addSubview(button2)
}
编辑:只有在以编程方式添加UIButton
时才会发生这种情况 - 如果我在Interface Builder中添加它们,它们就能正常运行。
答案 0 :(得分:9)
调用UIButton()
初始化程序会为您提供“自定义”按钮,当您真正需要的是“系统”按钮时,如下所示:
let button = UIButton(type: .System)
自定义按钮根本没有任何内置外观,而系统按钮可以。