我正在使用包含ContainerView的UIViewController。在ContainerView内部,我有一个UITableViewController。我的UIViewController中有一个PanGestureRecognizer,用于关闭它。现在的问题是,当我平移以关闭UIViewController时,被触摸的UITableViewController内部的TableViewCells会短暂突出显示。
由于不需要,我已禁止在表视图中滚动。
我将此添加到了平移手势处理程序的import Constants from 'expo-constants';
中,但没有任何作用:
const { version } = Constants.manifest;
我也尝试过:
.began
,但是触摸仍然传递给TableView并导致单元格突出显示。有什么解决办法吗?
答案 0 :(得分:0)
您可以尝试立即取消选择在didSelectRow
的委托方法中选择的行。
extension MyViewController: UITableViewDelegate {
public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}
}
将防止选中它们时突出显示单元格。根据我的经验,这是很常见的做法。
编辑:我的错误,误解了问题。在这种情况下,您可以考虑使用tableView的scrollView委托来确定何时滚动,并在单个单元格上禁用交互,
class ViewController: UIViewController {
private var areCellsDisabled = false {
didSet {
tableView.reloadData()
}
}
// Rest of your view controller logic here...
}
extension ViewController: UITableViewDelegate {
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
areCellsDisabled = true
}
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
areCellsDisabled = false
}
}
extension ViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// Configure/dequeue the cell, etc.
if areCellsDisabled {
cell.isUserInteractionEnabled = false
} else {
cell.isUserInteractionEnabled = true
}
return cell
}
}
但是,这可能会给问题带来麻烦。让我知道是否有帮助。
答案 1 :(得分:0)
我最终使用了这个:
<html>
<head>
<style>
.hiddenfile {
opacity: 0;
visibility: hidden;
display: none;
}
</style>
</head>
<body>
<div id="SOMETHING" class="SOMETHING hiddenfile" name="SOMETHING">...</div>
<div id="SOMETHING2" class="SOMETHING2 hiddenfile" name="SOMETHING2">...</div>
<div id="SOMETHING3" class="SOMETHING3 hiddenfile" name="SOMETHING3">...</div>
</body>
</html>
它不一定在每种情况下都有用,但是对于我的TableView来说,它可以防止突出显示发生。