Можно попытаться немедленно отменить выбор строк, выбранных в методе делегата для 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
}
}
Впрочем, это может быть проблемой. Дайте мне знать, если это поможет.