如何禁用默认的tvOS焦点动画?

时间:2016-08-25 21:06:25

标签: uitableview uitextfield tvos focus-engine

我需要创建一个由UITableViewUITextField和一些自定义UIView混合而成的用户界面,我还需要提供自定义焦点动画。

如何让UITableView / UITableViewCellUITextField无法呈现默认的焦点动画?

我试过了:

    override func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) {
        if let view = context.previouslyFocusedView {
            view.layer.removeAllAnimations()
        }
        if let view = context.nextFocusedView {
            view.layer.removeAllAnimations()
        }
    }

我可以添加自己的动画,但无法摆脱“默认情况”。视图中的动画。

3 个答案:

答案 0 :(得分:2)

要从UITableViewCells中删除焦点,请使用以下代码:

 func tableView(_ tableView: UITableView, canFocusRowAt indexPath: IndexPath) -> Bool {
    return false
}

答案 1 :(得分:0)

将单元格的焦点样式更改为自定义,而不是默认样式。

cell.focusStyle = UITableViewCellFocusStyle.custom

答案 2 :(得分:0)

我已经解决了与您的问题类似的问题,但是我的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()

    })

}

表重新加载后,它会转换其非焦点形式,并且循环本身会重复。