ios - 长按不同 View 时创建可拖动的 UIView

标签 ios objective-c drag-and-drop uicollectionview

我已经实现了以下功能:

我正在显示一个包含不同项目的全屏UICollectionView。在此 View 下方(看不见)是其中一项的“详细” View 。

当用户长按 UICollectionView 项目之一时,我想隐藏 UICollectionView 以显示后面的“详细” View 。

然后我将实例化一个新的 UIView ,它悬停在该 View 上并且可以拖动。然后,用户可以将这个新的 UIView 拖放到“详细信息”屏幕上的位置。

我遇到的唯一问题是长按与可拖动 View 的同步。我希望用户长按 UICollectionView,然后立即拖动可拖动 View 。

如何连接这两个操作?

此时 UICollectionView 调用下部 View 上的委托(delegate),该委托(delegate)实例化可拖动 View :

- (void)contactAlgorithm:(ContactAlgorithmViewController *)contactFlowViewController didLongPressContact:(CDContact *)contact {    
DraggableContactView *draggableView= [[DraggableContactView alloc] initWithContact:contact];
[self.view addSubview:draggableView.view];

}

但是如何使这个可拖动 View 成为由 long.press 拖动的 View ?

enter image description here enter image description here

最佳答案

首先获取长按的item的frame。 在该帧处添加可拖动 View 。

现在,将平移手势识别器添加到该 View 并将该手势的委托(delegate)设置为 viewController ,每当移动发生时委托(delegate)方法就会被调用。 更改可拖动 View 的框架以跟随触摸。

您可以使用viewController的touchesMoved方法来代替添加平移手势。

代码:
使用下面的代码,您可以拖动 View 而不使用平移手势

//have a class property of DraggableContactView
@implementation ViewController{

    DraggableContactView *dragableView;
}

longPressGestureRecogniser的选择器方法

-(void)longPress:(UILongPressGestureRecognizer *)ges{

    if(dragableView==nil){
        dragableView=[[DraggableContactView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
        dragableView.backgroundColor =[UIColor greenColor];
        [self.view addSubview:dragableView];
    }
    CGPoint p =[ges locationInView:self.view];
    [dragableView setCenter:p];
}

关于ios - 长按不同 View 时创建可拖动的 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21363368/

相关文章:

java - Android 是否像 iPhone 一样在顶部栏中有一个互联网状态转圈?

ios - 像UITableView Design这样具有多个列的可能方法。

objective-c - 在 XCode 4.3.2 中,当我运行 ARC 转换重构工具时,我所有的 "retain"属性选项都没有更改为 "strong"

javascript - 网格拖放 : Suppress for some records (groups)

ios - 将 .xib 文件转换为 Storyboard

ios - 启用分页的 UICollectionView 中心单元格

objective-c - 使用绑定(bind)来实现 NSTableView 拖放重新排列?

java - 图像不会保留在 Java 的 JTextPane 中

macos - SwiftUI:如何从 macOS 上的“通讯录”中拖放联系人

ios - rgb(34, 34, 34) 到 UIColor