Chcę wyświetlić UIAlertController
na wierzchu urządzenia UIViewController
z wewnątrz UICollectionView
. Widok kolekcja musi skoncentrować się na starcie, więc overrode zmienną preferredFocusableView
następująco:Fokus znika po otwarciu kontrolera UIAlert na sterowniku TVOS 10 GM
override var preferredFocusedView: UIView? {
return self.collectionView
}
Z tvOS 9 wszystko działało w porządku: alert kontroler otwarte prawidłowo i byłem w stanie wybrać jeden z UIAlertAction
s wyświetlane.
Na TVOS 10 Golden Master, po otwarciu kontrolera alertu i przewinięciu do innej akcji, fokus zniknie z ekranu i nie mogę przewinąć do innych akcji lub stukając w przycisk Menu na pilocie Siri. Aplikacja utknęła w kontrolerze alertu i słyszę przewijany dźwięk, gdy próbuję przewinąć do innych działań, ale nic się nie dzieje na ekranie. Muszę wymusić zamknięcie aplikacji i ponowne jej otwarcie.
To jest kod aplikacji. Próbowałem ustawić preferredFocusableView
na alertController.preferredFocusedView
lub poprzez usunięcie metod ustawiania ostrości w widoku kolekcji, ale bez wyników.
var alertController : UIAlertController?
func showAlert() {
alertController = UIAlertController(title:"Example title", message: "Example description", preferredStyle: .Alert)
let action1 = UIAlertAction(title: "Option 1", style: .Default) { (action : UIAlertAction) -> Void in
//call to another method
}
// action2, action3, action4...
let action5 = UIAlertAction(title: "Option 5", style: .Default) { (action : UIAlertAction) -> Void in
//call to another method
}
let actionDismiss = UIAlertAction(title: "Dismiss", style: .Destructive) { (action : UIAlertAction) -> Void in
self.alertController!.dismissViewControllerAnimated(true, completion: nil)
}
alertController!.addAction(action1)
alertController!.addAction(action2)
alertController!.addAction(action3)
alertController!.addAction(action4)
alertController!.addAction(action5)
alertController!.addAction(actionDismiss)
alertController!.preferredAction = action1
self.presentViewController(alertController!, animated: true, completion: nil)
}
override var preferredFocusedView: UIView? {
if self.alertController != nil {
return self.alertController!.preferredFocusedView
} else {
return self.collectionView
}
}
Gdzie nazywasz 'showAlert'? –
@ Danielpar, gdy użytkownik dotknie pilota na przycisku w kontrolerze widoku –
preferredFocusedView został uznany za przestarzały w tvOS10 https://developer.apple.com/reference/uikit/uifocusenvironment/1616830-preferredfocusedview –