Я реализую TVDigitEntryViewController
в SwiftUI. Экран отображается правильно, однако, хотя в области выбора отображаются цифры 1–0 плюс пробел, я могу сосредоточиться только на числе 1
. Любые правильные удары отклоняются, и фокус остается только на # 1.
Код выглядит следующим образом:
import SwiftUI
import TVUIKit
struct LinkAccountView: UIViewControllerRepresentable {
func makeUIViewController(context: Context) -> UIViewController {
return LinkAccountVC()
}
func updateUIViewController(_ viewController: UIViewController, context: Context) {
}
}
class LinkAccountVC: TVDigitEntryViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.numberOfDigits = 4
self.titleText = "Link Code"
entryCompletionHandler = { (enteredCode) in
print("Code:\(enteredCode)")
}
}
}
Обновление: реализация без SwiftUI работает, поэтому проблема определенно связана с SwiftUI по некоторым причинам.
Вот полный пример проекта, который можно использовать для демонстрации проблемы:
import SwiftUI
import TVUIKit
struct ContentView: View {
var body: some View {
VStack {
Spacer()
NavigationView {
List {
NavigationLink(destination: LinkAccountView()) {
HStack {
Image(systemName: "link")
.font(.headline)
Text("Link Account")
.font(.headline)
}
}
}
.padding()
.navigationBarTitle("Settings")
}
}
}
}
struct LinkAccountView: UIViewControllerRepresentable {
func makeUIViewController(context: Context) -> TVDigitEntryViewController {
return LinkAccountVC()
}
func updateUIViewController(_ viewController: TVDigitEntryViewController, context: Context) {
}
}
class LinkAccountVC: TVDigitEntryViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.numberOfDigits = 4
self.titleText = "Link Code"
entryCompletionHandler = { (enteredCode) in
print("Code:\(enteredCode)")
}
}
}