2013-03-19 3 views
0

UIView (하위 클래스)의 레이어에서 화면을 그리는 것에 대한 훌륭한 훌륭한 자습서를 수행하고 있습니다. http://spritebandits.wordpress.com/ 그냥 작동합니다.UITableView에서 손가락으로 화면에 그리기

한 가지만 있습니다. 이 뷰를 UITableViewCell의 서브 뷰로 배치했는데, 당연히 UITableView의 일부로 표시됩니다. UIScrollView 내에 배치 할 때 동일한 문제가 발생할 것이라고 생각합니다. (UITableView는 어쨌든 UIScrollView에서 상속받습니다.)

터치는 관련 동작이 수평 인 동안 내 그림보기에 의해 트리거됩니다. 손가락을 다소 수직으로 움직이면 UITableView가 테이블을 인계 받아 스크롤합니다.

실제로 터치가 내 눈앞에있는 동안 터치를 조정할 수있는 적절한 방법이 있습니까?

중요성 : 스토리 보드를 사용 중입니다. 셀은 자체 하위 클래스 인 UITableViewCell이있는 프로토 타입 셀입니다.

답변

0

나는 그것에 대한 해답이 없습니다. 그러나 본질적으로 해결 방법이 있습니다.

당신은있는 UITableViewCell의 스크롤을 사용하지 그리기 모드로의 사용자를 얻을 수 있으며, 사용자가 도면과 함께 이루어집니다

일단 다음, 다시 스크롤을 가능하게 할 수있다.

화면의 아무 곳이나 버튼을 포함하면 모드를 전환하는 데 도움이됩니다.

+0

감사합니다. 기술적으로는 효과가있을 수 있습니다. 그러나 이것은 좋은 사용자 경험입니까? 어쨌든. 사용자가 실제로 무언가를 그리는 동안 스크롤을 사용하지 않도록 설정할 수 있습니다. 하지만 사용자가 세로 방향으로 그리기를 시작하면 작동하지 않습니다. –

1

나는 당신이 말하는 것과 같은 클래스 "캔버스"와 UITableViewCell을 사용하여 이것을 구현했다. 하지만 전 셀을 드로잉에 사용하지 않았고 UITableView 내부의 UIView 만 서브 뷰로 사용했습니다.

UIView (내가 그림을 허용하는 셀의 하위보기)가 touchesBegan 또는 touchesEnded를 발생시킬 때 UITableView 스크롤을 활성화하고 비활성화하여 전체 사용자 경험에 도달했습니다. 따라서 UIView 내부를 터치/이동하면 그리는 것입니다. 바깥에있을 때, 그들은 스크롤하고 있습니다. 그래서 그들은 그리기 때문에 UIView에서 스크롤 할 수 없습니다.

귀하의 경우에 문제는 전체 셀이 그리기보기이기 때문에 그리드 중 하나이기 때문에이 구체적인 셀에서 스크롤 할 수 없다는 것입니다.

희망이 도움이 될 것입니다.

+0

내 캔버스 하위보기는 해당 셀의 일부이기도합니다. 셀에 다른 lables 및 단추가 있습니다. 캔버스보기의 모든면에는 사용자가 테이블을 스크롤하기 위해 드래그 할 수있는 충분한 공간이 있습니다. 그리고 나는 똑같은 트릭을 시도했다. 나는 touchesBegan가 해고 될 때 나는 추적했다. 그것은 사용자가 옆으로 움직일 때에 만 해고됩니다. 내가 업 - 다운 구성 요소와 어떤 움직임을 통지하지 않습니다. 트릭을 사용하여 주위를 둘러 보았습니까? –

+0

Uhm .. 한가지, 캔버스를 탭한 다음 손가락을 위아래로 움직이면 스크롤 또는 그림이됩니다. (천천히 시도해보십시오. 처음 캔버스를 두 드리십시오. 그리고 나서 위아래로 조금 움직입니다) –

+0

방금 ​​해 보았습니다. touchesBegan에서는 먼저 UITableView를 찾고 scrollEnabled를 NO로 설정할 때까지 superview 체인을 올라갑니다. touchesEnded와 동일 : 예. 따라서 사용자가 수직으로 그림을 그리기 시작할 때 제대로 작동합니다. 사용자는 방향을 변경하고 그림 그리기를 계속할 수 있습니다.그리고 사용자가 그림을 그리기 시작하지만 실제로 손가락을 움직이기 전에 터치 한 후 잠깐 기다리면 잘 작동합니다. 그러나 사용자가 horzontal 또는 diagonal을 시작하거나 테이블을 스크롤하면 테이블이 스크롤됩니다. –

관련 문제