Как я могу отключить анимацию фокуса tvOS по умолчанию?
Мне нужно создать пользовательский интерфейс, который представляет собой смесь UITableView
, UITextField
и некоторые обычаи UIView
и мне также нужно предоставить собственную анимацию фокуса.
Как я могу получить UITableView
/UITableViewCell
а также UITextField
не визуализировать анимацию фокуса по умолчанию?
Я старался:
override func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) {
if let view = context.previouslyFocusedView {
view.layer.removeAllAnimations()
}
if let view = context.nextFocusedView {
view.layer.removeAllAnimations()
}
}
Я могу добавить свои собственные анимации, но не могу избавиться от анимации "по умолчанию" в представлении.
1 ответ
Чтобы удалить фокус из UITableViewCells, используйте этот код:
func tableView(_ tableView: UITableView, canFocusRowAt indexPath: IndexPath) -> Bool {
return false
}
Измените стиль фокуса ячейки на пользовательский вместо стандартного.
cell.focusStyle = UITableViewCellFocusStyle.custom
Я решил свою проблему с которой похож на ваш вопрос, но мой UITableView
который имеет только один UITableViewCell
, Таким образом, когда UIViewController представляет / загружает, нет сфокусированного UITableViewCell, и когда я щелкаю ячейку, он выполняет свое действие (представляет UIAlertController
)
if let focusedCell = UIScreen.main.focusedView as? MyCell{
focusedCell.backgroundColor = UIColor.clear
}
затем
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// take action
... alertController configuration
present(alertController, animated: true, completion: {
tableView.reloadData()
})
}
После перезагрузки таблицы она преобразует свою несфокусированную форму, и цикл повторяется.