2

我需要创建一个混合了 , 和一些自定义的 UI,UITableViewUITextFieldUIView需要提供自定义焦点动画。

如何获取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()
        }
    }

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

4

3 回答 3

2

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

cell.focusStyle = UITableViewCellFocusStyle.custom
于 2018-12-17T14:04:04.037 回答
1

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

 func tableView(_ tableView: UITableView, canFocusRowAt indexPath: IndexPath) -> Bool {
    return false
}
于 2017-01-18T11:18:58.390 回答
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()

    })

}

当表重新加载自身时,它会转换其未聚焦的形式,并且循环会重复自身。

于 2019-03-16T22:07:24.673 回答