Как я могу отключить анимацию фокуса 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()

    })

}

После перезагрузки таблицы она преобразует свою несфокусированную форму, и цикл повторяется.

Другие вопросы по тегам