当前位置:  开发笔记 > IOS > 正文

有没有一种简单的方法可以在两个UITableViews之间拖放UITableViewCell?

如何解决《有没有一种简单的方法可以在两个UITableViews之间拖放UITableViewCell?》经验,为你挑选了1个好方法。

正如标题所说.在单个UITableView中重新排序是微不足道的,但iPad的屏幕足够大,可以同时显示多个UITableView.所以似乎应该有一种方法可以在两个UITableViews之间拖放UITableViewCell.有关最佳方法的任何想法?



1> Morrowless..:

我的解决方案是使用自定义UIGestureRecognizer来跟踪触摸事件,并使用单独的视图来绘制拖动操作.

这是有效的,因为UIGestureRecognizer不会阻止响应者链.从UIGestureRecognizer文档:

UIGestureRecognizer对象不在响应者链中,但是观察对其视图和视图的子视图进行了热门测试.

创建自定义UIViewController(DragAndDropViewController)并将其视图添加到要进行拖放操作的视图的父视图中.使用自定义手势识别器类将触摸信息转发到DragAndDropViewController.

源告诉您的DragAndDropViewController拖动源自何处(以及任何自定义信息).控制器还应具有对放置目标的委托引用.发生丢弃时,向代理发送UITouch事件(根据Apple不推荐,但需要UITouch对象才能在目标视图中获取正确的位置).

这就是我的DragAndDropViewController的样子:

@protocol DragAndDropDestination

(void)droppedItem:(NSDictionary *)item withTouch:(UITouch *)touch;

@end

@interface DragAndDropViewController : UIViewController { id _dropDestination; NSDictionary *_draggedItem; UIImageView *_icon; }

@property (nonatomic, assign) id dropDestination; @property (nonatomic, retain) NSDictionary *draggedItem;

// Source sends this message - (void)startDraggingWithItem:(NSDictionary *)item;

@end

目标获取消息后,您可以使用- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event获取放置目标的确切视图.

cancelsTouchesInView如果您希望在表视图中正常发生其他UI操作,请确保在手势识别器中禁用.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有