.focusable
добавляет возможность для элементов, которые не могут быть сфокусированы по своей природе, например Text
(или Image
), но Button
фокусируется как есть, поэтому ничего не происходит.
Следующие модификации вашего примера работают (протестировано с Xcode 11.2):
var body: some View {
VStack {
Text("Focusable").foregroundColor(textColor)
.focusable(true) { (focus) in
if focus {
self.textColor = .blue
} else {
self.textColor = .green
}
}
Button(action: {
self.textColor = .black
}) {
Text("Button")
}
}
}