Есть некоторые ТАК сообщения , но не связанные с моей ситуацией.
touchesBegan(:)
не работает на tableview/scrollview.
UITableView
или UIScrollView
потребляет все сенсорные события и не передается следующим респондентам. У меня есть контроллер базового вида, и я хочу получать сенсорные события в базовые контроллеры touchesBegan(:).
В некоторых контроллерах дополнительного вида (расширяет контроллер базового вида) я использовал tableView. Когда я касаюсь tableView, его потребление и никакие события не получены в базовых контроллерах touchesBegan(:).
Как с этим бороться?
Я хочу, чтобы касания поступали в базовые контроллеры touchesBegan(:)
первыми. Затем, условно, я хочу разрешить подчиненным контроллерам, tableView потреблять это или нет.
import UIKit
class ItemCell: UITableViewCell {
@IBOutlet weak var title: UILabel!
}
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.delegate = self
self.tableView.dataSource = self
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("Touches began!")
}
func numberOfSections(in tableView: UITableView) -> Int { return 1 }
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 10 }
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ItemCell", for: indexPath) as! ItemCell
cell.title?.text = "Click me"
return cell
}
}
В этом коде выше вызывается print («штрихи начались!»), Когда я касаюсь вида за пределами таблицы. Но когда я прикасаюсь к столу, я все еще хочу запустить печать («Начались касания!»). Предположим, что просмотр таблицы занимает половину общего просмотра.