2013-08-09 3 views
0

UICollectionView이 있는데보기에서 항목을 터치 앤 드래그하여 삭제할 수 있기를 바랍니다. (Dock이 OS X에서 작동하는 방식과 거의 같은 선을 따라 : 끌고 가거나 놓아 버리면 제거됩니다.)사용자가 UICollectionView 밖으로 항목을 드래그하는 것을 감지합니까?

몇 가지 조사를 해봤지만 거의 대부분 내가 찾은 모든 것은 드래그 앤 드롭 의 CollectionView를 찾고 있습니다. 재정렬 할 필요가 없습니다. (소스 배열에서 주어진 인덱스에있는 항목을 제거한 다음 다시로드하면됩니다.) 항목이보기 밖으로 이동되어 해제 될 때만 감지하면됩니다.

1)로하는 것이 가능 내장 CollectionView, itemWasDraggedOutsideViewFromIndex: 방법 또는 무언가의 일종 :

그래서 난 내 질문이 있습니다 가정?

2) 그렇지 않은 경우 서브 클래스로 수행 할 수있는 작업인가? (특히 CollectionView 초보자도 가능합니까?)

3) 권장되는 코드 샘플 또는 자습서가 있습니까?

답변

3

여기에 그 작업을했습니다 헬퍼 클래스는 단지 않습니다이다. TestApp에서 사용하는 방법에 대한 예제가 있습니다.

에 연간 약

UPDATE, 이것은 지금-전체에 드래그 앤 드롭 프레임 워크입니다. 이 유용한 증명 희망 : https://github.com/ice3-software/between-kit

+0

이것은 아주 멋지다. 고맙습니다. 개선을 기대합니다. – otakuProgrammer

+0

감사! 나는 대중에게 마주침을하는 응용 프로그램에서 사용하고 있습니다. 앞으로 몇 주 안에 100 % 안정적으로 표시 할 수 있기를 바랍니다. – sf13579

+0

2 개 이상의 콜렉션 뷰를 처리 할 수있는 방법이 있다면 또한 좋을 것입니다. – otakuProgrammer

3
  1. 제안하는 것과 같은 기본 제공 방법이 없습니다. 원하는 작업을 수행 할 수 있지만 드래그/드롭 작업을 처리하기 위해 제스처 인식기와 적절한 코드로 처리해야합니다.

  2. 하위 클래스를 사용하여이 작업을 시도하고 마지막으로 내보기 컨트롤러에 넣기로 되돌아갔습니다. 필자의 경우 컬렉션 뷰에서 물건을 드래그하고 다른 두 개의 뷰를 화면에 표시했다.

  3. 당신이 책을 가지고 있는지 모르겠지만 가장 유용한 점은 Erica Sadun의 Core iOS6 Develper 's Cookbook입니다.이 책에는 콜렉션 뷰 내에서 드래그/드롭에 대한 훌륭한 코드가 있습니다. 나는 특별히 이력서 외부로 드래그하는 것을 다루지는 않는다고 생각하지만, 제게는 제스쳐 인식기를 일반적인 수퍼 뷰에 놓고 항상 서브 뷰의 좌표보다는 좌표를 사용하는 것이 해결책이었습니다. 에 실패 할 단일 탭 제스처를 요구하는 I 히트

하나의 문제는 내가 탭과 세포뿐만 아니라 드래그를 선택할 수 있기를 원이며, 방법은 (반대로 애플의 문서에도 불구하고)가 없다 콜렉션 뷰. 그 결과, 나는 전체 작업을 수행하기 위해 길게 누르면 제스처를 사용하지 결국, 긴 키를 누릅니다에 대한 translationInView (locationInView이)가 없다 그래서 몇 가지 추가 작업이 필요 :

iOS - Gesture Recognizer translationInView

또 다른를 더 어렵게 만들거나 더 쉽게 만들 수있는 것은 드롭 후보 수입니다. 나는 다양한 유형의 뷰 (직선 UIView, collectionview 및 scrollViews)가 많았습니다. 나는 "드롭 타겟"의리스트를 유지하고 드래그 된 오브젝트가 움직일 때 타겟과의 교차를 테스트하는 것이 필요하다는 것을 알게되었습니다. 어떻게 든 교차하는 뷰가 드롭이 발생할 수있는 위치인지 여부를 결정할 수 있어야합니다.

보기에서 드래그하여보기를 지우는 특정 상황 (예 : 휴지통으로 드래그하여 볼 수있는 것처럼)을 처리하는 경우 문제는 복잡하지 않습니다. 변형을 할 때 프레임이 의미가 없지만 센터는 여전히 양호 함을 기억해야합니다. 그래서 당신은 일반적으로 프레임을 사용할 모든 것을 위해 센터를 사용하게됩니다.여기

내가 도움이되었다 온라인을 발견 가장 가까운 것입니다; 내 응용 프로그램에서 구현하기에는 너무 복잡 할 것이라고 생각하면서이 클래스를 사용하여 끝나지 않았습니다.

http://www.ancientprogramming.com/2012/04/05/drag-and-drop-between-multiple-uiviews-in-ios/

희망이 도움이되고있다. , https://github.com/Ice3SteveFortune/i3-dragndrop가 도움이되기를 바랍니다 : 구현 :

+0

매우 상세하고 유용한. 고맙습니다! – Nerrolken

관련 문제