カスタムセルを使ったTableViewの話です。セルのVIewの上にdarkGrayViewというViewを載せてハイライト時にグレーになる様にしています。
swift
1@IBOutlet weak var darkGrayView: UIView! 2 3override func awakeFromNib() { 4 super.awakeFromNib() 5 darkGrayView.layer.cornerRadius = 10 6} 7 8override func setHighlighted(_ highlighted: Bool, animated: Bool) { 9 darkGrayView.backgroundColor = highlighted ? .darkGray : .white 10 darkGrayView.alpha = highlighted ? 0.2 : 0 11}
このセルをスワイプ(削除)した際にハイライトになったままになってしまうことがあります。
具体的にはハイライトになった瞬間にスワイプすると解除されずにそのままスワイプされます。
この問題を解決するにはどの様な方法がありますか。
説明するよりは触ってもらったほうがわかると思います。TableViewが使われていてハイライトで色が変わるものでスワイプできるなら同じ様な状況を再現できるかと思います。TableViewの仕様だと考えます。
コードが断片的でよく分かりませんが、もしかして super.setHighlighted を呼ぶべきでは。
super.setHighlighted(highlighted, animated: true)を配置しましたが変化はなしでした。
カスタムセルの中に予定の様の白い角丸のVIewを配置しており、そのViewの上にdarkGrayViewを配置している状況です。
コードが断片的でよく分かりません.が,setHighlightedの中にprint(highlighted)を入れてどうなっているのか見てどのようになっているのか教えてください.
GIFの内容が少しわかりにくかったので更新しました。
最初のスワイプが理想で、2回めのスワイプ が問題となっている状態です。
このグレーになったままスワイプ した時print(highlighted)の中身はtrueのままでした。
コードとしては本当にシンプルでこれだけなんです。これ以上となるとxibの方とかも載せた方がいいでしょうか。
このハイライトされたままスワイプしてしまう条件として、セルに触れた時直ぐにスワイプした場合は起きなくて、ハイライトした直後にスワイプ するとたまに起きます。ハイライト状態からゆっくりスワイプした場合は起きないです。
対策として、セルがスワイプされた際にそのスワイプしているセルの中のdarkGrayViewの背景色を白にする処理を書ければ解決すると思うのですが、やり方がよくわからなくて..