TVDigitEntryViewController - можно выбрать только первую цифру - PullRequest
1 голос
/ 17 апреля 2020

Я реализую 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)")  
        }  
    }  
}  
...