2016-09-01 10 views
0

이 코드는 나를 기본보기 아래에있는 뷰를 얻을 수 있도록 : 테이블이 작업을 수행 할 수있는 방법은hitTest를 사용하여 테이블에있는 기본 뷰를 가져 오는 방법은 무엇입니까?

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)!)) 
} 

있습니까? 셀이있는 표가 있는데 사용자가 끌고있는 셀이나 셀 내에서 어떤 뷰를보고 싶습니다. 내 목표는 버튼을 사용하여 스크롤을 비활성화 한 다음 테이블 위로 드래그하여 셀을 인쇄하거나 사용자가 드래그하여 셀 내에서 볼 수있게하는 것입니다.

답변

2

index-path에 대한 UITableView을 셀 하위 뷰를 기반으로 쿼리 할 수 ​​있습니다. 당신이 그것에 제스처 인식기를 설정해야하는있는 tableView에 접촉을 처리하기 : 포인트 테이블

편집의 모든 행의 외부에있는 경우

let point = cellSubView.convertPoint(cellSubView.bounds.origin, toView: tableView) 
let index = tableView.indexPathForRowAtPoint(point) 

indexPathForRowAtPoint()은 nil을 반환합니다.

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) 

    ... 
} 
+0

내가보기 컨트롤러로 이동 한 터치에 넣으시겠습니까? –

+0

당신은 당신의 tableView에'UIGestureRecognizer'를 설정하고 목표 방법에 대한 터치를 처리 할 필요가 있습니다. – xhamr

+0

예. 나는 이것으로 정말로 고심하고 있었다. 내 다른 질문을 체크 아웃하려는 경우 그들은 단지 색인 대신 각 셀에서 변수를 얻으려고하는 것과 매우 유사합니다. 각 셀에는 uitableviewcell 클래스 내의 ID가 있으며이를 표시하려고합니다. 이제이 대답으로 색인을 표시 할 수 있습니다. 타이 너무! –