2013-06-27 2 views
0

사용자 지정 드래그 가능한 UITextViews가 있고 가장 최근에 드래그 된 UITextView가 다른 textViews 위에 표시되도록 가장 큰 zPosition (textView.layer.zPosition)을 갖지만, textViews를 서로 위에 드래그 한 다음 움직여보십시오. 최근에 추가 된 (superview에) textView의 hitTest가 먼저 실행되고 응용 프로그램이 히트를 결정합니다. 심지어 가장 큰 zPosition (최신 이동 된 것)이 필요합니다.)서로 위에 뷰의 히트 테스트 순서 변경

I 커 zPosition와 터치 위치에 다른 textViews가 있는지 확인하기 위해이 hitTest를 변경했지만, 그러나 hitTest는 텍스트 뷰의 경계 (왼쪽 상단은 X = 0, Y = 0)

인에 기초하여 위치를 준다 그래서 충돌 테스트보기를 제거하고 다시 추가하지 않고 실행 순서를 변경하는 방법이있다, 또는 당신과 당신의 수퍼에 사용 bringSubviewToFront

example situation

답변

1

좋아, textView 자체 프레임을 사용하여 hitTest를 수정했습니다. 그러나 hitTest에서 포인트

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 
    //Real location of point in superview 
    CGPoint pointInEditingView = CGPointMake(self.frame.origin.x+point.x, self.frame.origin.y+point.y); 

은 내가 더 큰 zPosition 값 터치 위치에있는 다른 textViews이 있는지 확인하고,

0

을 당한다 있는지를 잘 볼 수 있도록하는 또 다른 방법을 생각할 수 최신 이동 UITextView.

+0

내가 그 시도했던이 있다면 전무를 반환, 텍스트 뷰의 경계에 따라 나에게 위치를 제공 한 이후, – Efesus

+0

이 작동하지 않아 샘플 프로젝트 나 관련 소스 코드를 추가 할 수 있습니까? – Danilo

+0

textView가 선택되었지만 작동하지 않을 때마다 [editingView bringSubviewToFront : [textViewArray objectAtIndexPath : maxZPositionTextView]]를 사용했습니다. – Efesus