MasterViewController에서 DetailViewController까지 UISplitViewController (Xcode 템플릿 프로젝트 기반)의 D & D에서 작업하고 있습니다.iOS (iPad) UISplitViewController의 드래그 앤 드롭
기본적으로 내가하고있는 일은 UILongPressGestureRecognizer를 만들어 MasterViewController의 self.tableview 속성에 배치하는 것입니다.
아래는 제 제스처 인식기입니다.
- (void)gestureHandler:(UIGestureRecognizer*)gesture
{
CGPoint location;
NSIndexPath* indexPath = [self.tableView indexPathForRowAtPoint:[gesture locationInView:self.tableView]];
if (gesture.state == UIGestureRecognizerStateBegan) {
// Create draggable view
NSString* imageCanvasName = [self imageNameByIndexPath:indexPath isDetail:YES];
UIImage* imageCanvas = [UIImage imageNamed:imageCanvasName];
_draggedView = [[UIImageView alloc] initWithImage:imageCanvas];
// Create drag-feedback window, add the drag-view and make the drag-window visible
CGRect windowFrame = self.view.window.frame;
_dragFeedbackWindow = [[UIWindow alloc] initWithFrame:windowFrame];
location = [gesture locationInView:gesture.view.window];
[_draggedView setCenter:location];
[_dragFeedbackWindow addSubview:_draggedView];
[_dragFeedbackWindow setHidden:NO];
}
else if (gesture.state == UIGestureRecognizerStateChanged) {
// Update drag-view location
location = [gesture locationInView:gesture.view.window];
[_draggedView setCenter:location];
}
else if (gesture.state == UIGestureRecognizerStateEnded)
{
// Disconnect drag-view and hide drag-feedback window
[_draggedView removeFromSuperview];
[_dragFeedbackWindow setHidden:YES];
// If drop is in a valid location...
if ([self.tableView pointInside:_draggedView.center withEvent:nil] == NO)
{
// Get final location in detailViewController coordinates
location = [gesture locationInView:self.detailViewController.view];
[_draggedView setCenter:location];
[self.detailViewController.view addSubview:_draggedView];
}
}
else {
NSLog(@"%s unrecognized gesture %d", __FUNCTION__, gesture.state);
}
}
iPad가 세로 모드 인 경우 모두 작동합니다. 드래그 앤 드롭이 작동합니다.
iPad가 회전하면 내 문제가 시작됩니다 ... 그런 경우, 내 _draggedView는 "반대로 회전합니다"- iPad의 회전을 "반사"합니다 - 떨어질 때까지 나타납니다.
내가 _dragFeedbackWindow에 약간의 회전을 적용해야처럼입니다 -하지만 실패 것들의 숫자 ...
어떤 생각을 했어요?
감사합니다.
안녕 Reuven, 나는 동일한 필요 조건이있다. 샘플 프로젝트를 공유해주십시오. 감사. – applefreak
. 청소까지 하루가 걸릴거야. – Reuven
여기 있습니다, 즐기십시오. http://www.box.com/s/p7exfvxcvzgneo97d1of – Reuven