Tôi đang làm việc trên D & D trong UISplitViewController (dựa trên dự án mẫu Xcode), từ MasterViewController đến DetailViewController.iOS (iPad) Kéo và thả trong một UISplitViewController
Về cơ bản, những gì tôi đang làm là tạo UILongPressGestureRecognizer và đặt nó vào thuộc tính self.tableview của MasterViewController.
Dưới đây là trình nhận dạng cử chỉ của tôi.
- (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);
}
}
Tất cả hoạt động rất độc đáo khi iPad đang ở chế độ dọc - kéo, thả - công trình.
Vấn đề của tôi bắt đầu nếu iPad được xoay ... Trong trường hợp này, _draggedView của tôi xuất hiện "xoay ngược" - nó sẽ "phản ánh" vòng xoay của iPad - cho đến khi giảm.
Nó giống như tôi phải áp dụng một số luân chuyển để _dragFeedbackWindow - nhưng tôi đã thử một số thứ, thất bại ...
Bất kỳ ý tưởng?
Cảm ơn!
Xin chào, tôi có cùng yêu cầu. Bạn có thể xin vui lòng chia sẻ một dự án mẫu xin vui lòng. Cảm ơn. – applefreak
. nó sẽ đưa tôi một ngày để dọn dẹp. – Reuven
Đây là, thưởng thức. http://www.box.com/s/p7exfvxcvzgneo97d1of – Reuven