2016-11-02 2 views
0

viewWillLayoutSubviews 메서드가 호출되면 뷰를 무한 스크롤 뷰의 하위 클래스에서 드래그하는 데 문제가 있습니다. 뷰는 0,0 좌표에서 멈 춥니 다. 전체 그림은 다음과 같습니다 : UIScrollView (페이징 가능)의 사용자 정의 하위 클래스는 인덱스를 유지하며 스크롤 할 때마다 해당 인덱스에 대한 새로운 뷰를 dataSource에 요청합니다. 그것은 [-1][0][1]에서 시작하며 사용자는 [0] 만 볼 수 있습니다. 사용자가 스크롤 오른쪽 일단 [-1]가 수퍼에서 제거하고 [0][1] 이동 페이지 [2][0][1][2]주고 생성. 무한히 스크롤하는 캘린더로 사용할 때 완벽하게 작동합니다. 이 캘린더에서는 몇 주 동안 약속을 끌 수 있기를 바랍니다. 이것은 UIGestureRecogniser를 사용하여 수행됩니다 - 사용자가 UIGestureRecogniser을 유발하고 그때 약속 뷰의 위치를 ​​업데이트 할 [gesture locationInView:self]을 사용하여 1 초 약속보기를 보유하고 있습니다. 무한 UIScrollView에서 페이지를 가로 질러 드래그

사용자가보기 측으로 끌

는 스크롤은 다음 페이지를 표시하기 위해 이동한다. 약속 뷰가 속해있는 페이지의 파단 때문에, 이것은 내가 잘 작동 UIGestureRecogniser을 유지 스크롤 자체 ( [scroll addSubview:appointmentView];)에 대한 약속을 이동해야하는 것을 의미한다. 그러나 autolayout을 사용하여 약속보기의 원래 위치가 주어 졌으므로 으로 부모 제약 조건을 제거 할 여력이 없기 때문에 모든 부모 제약 조건을 검토하고 firstItem 또는 secondItemappointmentView과 같은지 확인해야합니다. 다시 말해, appointmentView은 이제 페이지가 아닌 스크롤의 하위보기 임에도 불구하고 원본 페이지 내에서 스크롤 할 때 잘 작동합니다.

이 시점에서 사용자는 appointmentView을 옆으로 드래그하고 다음 주 (각 페이지는 1 주일 표시)로 내 스크롤을 이동합니다. 이번에는 내 손가락을 계속 이동하는 경우에는 두 번째 분할에 대한 (0,0)appointmentView briefly 이동, 그러나 UIGestureRecogniser 여전히 작동되면, appointmentView은 화면을 가로 질러 이동으로 돌아갑니다. 이 시점에서, appointmentView을 가정하는 것은 페이지 0에서 온다, 그 페이지가 왼쪽에 있고 중심 페이지 페이지 1 - [0][1][2]. 여기에 마침내

문제를 제공 : 사용자가 오른쪽 appointmentView의 원래 페이지 (0) 스크롤 지금 [1][2][3] 같이 제거 appointmentView 스크롤의 (0,0)UIGestureRecogniser로 이동됩니다 1 주 더 이동하면 UIGestureRecogniserStateEnded 상태의 선택자를 실행하지 않고 즉시 종료됩니다.

저는 원래 부모 페이지 0에 appointmentView을 연결하는 남아있는 유해 컨텐츠 제한 사항이 없습니다. 이는 페이지 0을 제거하면 왜 이런 현상이 발생하는지 전혀 모릅니다. appointmentView은 그 자체 (너비와 높이)와 하위 뷰 (보기 내의 레이블)에만 제약이 있으므로보기 배치는 appointmentView의 위치에 영향을 미치지 않아야합니다. 아직 ...

내 아이디어 지금까지 : 나는 새 브랜드 appointmentView를 만들고 일주일 페이지에는 링크가 없습니다 그래서 스크롤에 직접 추가 할 경우 내가 아는

  1. 가 제대로 동작하는지 어떤 문제도없이. 즉, 프로그래밍 방식으로 UIGestureRecogniser을 트리거하는 방법이 있다면 간단히 다음을 수행 할 수 있습니다.사용자가 appointmentView을 잠깐 보유하고 있는데 이전 appointmentView을 삭제하고 새 위치를 만들고 동일한 위치에 추가 한 다음 UIGestureRecogniser을 트리거 한 다음 새 손가락 appointmentView을 간단히 따라갑니다. 그러나 사용자가 화면에서 손가락을 들지 않으면이 작업을 수행 할 수있는 방법이 없습니다.
  2. 어쩌면 나는 원래 부모가 제거되었을 때 appointmentView이 미쳐 버리는 원인이되는 부모 제약 조건을 잊어 버렸을 수도 있지만 이것이 가능할 수는없는 것 같습니다. 4 가지 제약 조건 만 있습니다. x 좌표는 페이지 너비 분수 및 약속이있는 날을 기준으로합니다. y 좌표는 페이지 높이의 비율과 약속 시작 시간을 기준으로합니다. width - 페이지 너비의 분율; 높이는 페이지 높이의 분율입니다. 포기하고 이것에

모든 입력이 매우 극명하게 될 것이다 구석에 울고 나는 분명히이 모든 4를 제거하고 나는 거짓

  • -translatesAutoresizingMaskIntoConstraints 세트가 있습니다.

  • 답변

    0

    문제를 해결할 때 원본 부모보기가 해제되었을 때 문제가 발생하여 이동 프로세스에서 변수에 보관하고 드래그가 완료되면 놓을 수있었습니다.

    관련 문제