我需要创建一个由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()
}
}
我可以添加自己的动画,但无法摆脱“默认情况”。视图中的动画。
答案 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()
})
}
表重新加载后,它会转换其非焦点形式,并且循环本身会重复。