This code help me get the views beneath the main view:
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
let location = touches.first!.locationInView(self.view)
let view = self.view.hitTest(location, withEvent: event)
print("View: %@", NSStringFromClass((view?.classForCoder)!))
}
Is there some way to do this for a table? I have a table with cells and I want to see which cell the user is dragging over, or which view within the cell. My goal is to use a button to disable scroll, then be able to drag over the table and print out the cell or view within the cell as the user drags over them.
You can query the UITableView
for the index-path
based on cell subviews.
let point = cellSubView.convertPoint(cellSubView.bounds.origin, toView: tableView)
let index = tableView.indexPathForRowAtPoint(point)
indexPathForRowAtPoint()
returns nil if point is outside of any row in the table
EDIT: to handle the touches on the tableView you have to set a gesture recognizer on it.
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(didTapOnTableView(_:)))
tableView.addGestureRecognizer(tapGesture)
func didTapOnTableView(gesture: UITapGestureRecognizer){
let touchPoint = gesture.locationInView(tableView)
let index = tableView.indexPathForRowAtPoint(touchPoint)
...
}