Быстрое решение вашей проблемы - установить delaysContentTouches = false
для представления таблицы.
Согласно Apple Docs,
Если значение этого свойства равно true, представление прокрутки задерживает обработку жеста касания до тех пор, пока оно не сможет определить, предназначена ли прокрутка. Если значение равно false, представление прокрутки немедленно вызывает touchesShouldBegin (_: with: in :). Значение по умолчанию верно. См. Описание класса для более полного обсуждения.
В качестве альтернативы, если вы подклассифицировали UIScrollView, вы можете сделать то же самое, переопределив следующую функцию,
class MyScrollView: UIScrollView {
override func touchesShouldCancel(in view: UIView) -> Bool {
return type(of: view) == UIButton.self
}
}