나는 내부에 위젯을 추가 할 수있는 드래그 앤 드롭 방식으로 원하는대로 위젯을 추가 할 수있는 일종의 그리드보기를 만들고 있습니다. 현재 그리드보기는 UIscroll보기이고 위젯은 UIview의 하위 클래스입니다.UIscrollview and drag and drop
다음은 그 격자의 예입니다. 위젯을 드래그하면 위젯이 화면 아래쪽에 있으면 스크롤보기를 내려갈 수 있기를 원합니다. 지금은 내 위젯은 UIPanGestureRecognizer 다음과 같은 코드가 있습니다
func enterDragMode(recognizer:UIPanGestureRecognizer) {
if (recognizer.state == UIGestureRecognizerState.Ended) || (recognizer.state == UIGestureRecognizerState.Cancelled) {
gridNotificationCenter.postNotificationName("WidgetDragEnded", object: self)
// Notify the grid and drop the widget here
} else {
var translation = recognizer.translationInView(self.superview!)
var newPoint = self.center
newPoint.x += translation.x
newPoint.y += translation.y
if (CGRectContainsRect(moveDownRect, self.frame)) {
var scrollview = self.superview as? UIScrollView
if (scrollview != nil) {
// need to find correct visible rect here
res!.scrollRectToVisible(visibleRect, animated: true)
}
}
recognizer.setTranslation(CGPointZero, inView: self.superview)
}
}
을하지만 단순히 잡고있을 때 내가 콜백이 트리거되지 않기 때문에 제대로이 문제를 해결할 수있는 권리 클래스를 사용하지 않는 같은 느낌 보기 및 그것을 이동하지. 더 좋은 방법이 있습니까?
나에게이 컬렉션 컬렉션의 비명 소리. uiscrollview의 하위 클래스이기 때문에 동일한 속성을 가지며 레이아웃이 추가되었습니다. 어쨌든이 코드는 위젯 클래스에 있다고 가정합니까? moveDownRect의 출처는 어디입니까? –
move downRect는 widgetview 내부의 상수 rec이며,이 코드는 위젯 뷰에서 가져온 것입니다. 모든 위젯이 크기를 조정할 수 없기 때문에 collectionview를 사용하지 않았습니다. – Loadex
그리고 스크롤보기의 콘텐츠 크기를 프레임보다 크게 설정하고 있습니까? 그것은 세트 콘텐츠 오프셋 코드를 치는 건가요? –