UICollectionView 将手指拖动到单元格上以选择它们

2023-11-22

Using UICollectionView,是否可以通过将手指拖动到其中几个单元格上来选择多个单元格?例如,如果您将手指拖动到一行 6 上,然后向下拖动到下一行,它将选择所有这些。

尝试了一些简单的事情:

UISwipeGestureRecognizer *swipeGuesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeGesture:)];
[self.collectionView addGestureRecognizer:swipeGuesture];

但这似乎只调用第一个被触摸的单元格上的方法。

有任何想法吗?


Swift 3:通过自动滚动和工作滚动进行滑动选择。

var selectMode = false
var lastSelectedCell = IndexPath()

func setupCollectionView() {
    collectionView.canCancelContentTouches = false
    collectionView.allowsMultipleSelection = true
    let longpressGesture = UILongPressGestureRecognizer(target: self, action: #selector(didLongpress))
    longpressGesture.minimumPressDuration = 0.15
    longpressGesture.delaysTouchesBegan = true
    longpressGesture.delegate = self
    collectionView.addGestureRecognizer(longpressGesture)

    let panGesture = UIPanGestureRecognizer(target: self, action: #selector(didPan(toSelectCells:)))
    panGesture.delegate = self
    collectionView.addGestureRecognizer(panGesture)
}

func selectCell(_ indexPath: IndexPath, selected: Bool) {
    if let cell = collectionView.cellForItem(at: indexPath) {
        if cell.isSelected {
            collectionView.deselectItem(at: indexPath, animated: true)
            collectionView.scrollToItem(at: indexPath, at: UICollectionViewScrollPosition.centeredVertically, animated: true)
        } else {
            collectionView.selectItem(at: indexPath, animated: true, scrollPosition: UICollectionViewScrollPosition.centeredVertically)
        }
        if let numberOfSelections = collectionView.indexPathsForSelectedItems?.count {
            title = "\(numberOfSelections) items selected"
        }
    }
}

func didPan(toSelectCells panGesture: UIPanGestureRecognizer) {
    if !selectMode {
        collectionView?.isScrollEnabled = true
        return
    } else {
        if panGesture.state == .began {
            collectionView?.isUserInteractionEnabled = false
            collectionView?.isScrollEnabled = false
        }
        else if panGesture.state == .changed {
            let location: CGPoint = panGesture.location(in: collectionView)
            if let indexPath: IndexPath = collectionView?.indexPathForItem(at: location) {
                if indexPath != lastSelectedCell {
                    self.selectCell(indexPath, selected: true)
                    lastSelectedCell = indexPath
                }
            }
        } else if panGesture.state == .ended {
            collectionView?.isScrollEnabled = true
            collectionView?.isUserInteractionEnabled = true
            swipeSelect = false
        }
    }
}

func didLongpress() {
    swipeSelect = true
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UICollectionView 将手指拖动到单元格上以选择它们 的相关文章

  • Swift:如何让游戏中的角色只有落地后才能跳跃?

    我正在开发一款游戏 我的角色可以从一个陆地跳到另一个陆地 我已经把所有事情都做好了 除了我剩下的问题是 如果你继续点击屏幕 他可以永远跳跃 我希望他必须先落地才能再次跳跃 import SpriteKit import GameplayKi
  • 在 iOS 7 中查看 Core Data 创建的 sqlite 文件时出现问题

    当我尝试访问由核心数据创建的数据库文件时遇到问题 DB 文件位于 Documents 文件夹中 我已将其复制到桌面并使用 Firefox 插件打开它 Hello sqlite文件不包含任何行我有使用核心数据插入值 我正在使用 iOS 7 模
  • supportedInterfaceOrientations 方法不会重写其超类中的任何方法

    在 UIViewController 中 这段代码 public override func supportedInterfaceOrientations gt UIInterfaceOrientationMask if let mainC
  • 如何从标签栏控制器上方显示 UIActionSheet 视图?

    我需要在选项卡栏控制器上方显示操作表 我的意思是 即使操作表视图处于可见模式 我也能够看到选项卡栏控制器 因此 请建议如何从选项卡栏控制器上方查看 是否可以 其次 如何更改操作表的背景颜色和取消按钮背景颜色 请帮我 谢谢你 马丹 莫汉 要从
  • 为什么 iPhone 应用程序的 main() 函数没有机会完成?

    考虑以下main 大多数 iPhone 应用程序都采用以下方法 int main int argc char argv NSAutoreleasePool pool NSAutoreleasePool alloc init int retV
  • Xcode - 发布和分发配置中的 Malloc_Error

    仅当我在设备上选择发布或分发配置时 我才会收到此错误 在模拟器上它运行良好 请问 我错在哪里 cc1obj 4113 malloc mmap size 429379584 failed error code 12 error can t a
  • 如何在导航栏上添加 UIView?

    我需要覆盖UINavigationBar with UIView像这儿 除了使用带有按钮返回的自定义 UIView 作为导航栏之外 还有其他方法可以做到这一点吗 您可以将子视图添加到应用程序的基本视图 UIApplication share
  • iOS 上关键 ClientState 警告的默认访问速度缓慢

    在测试我的 iOS 应用程序时 我收到 对关键 ClientState 的默认访问速度慢 耗时 0 034635 秒 容差为 0 020000 警告 它似乎是间歇性发生的 我试图环顾四周看看它是关于什么的 但我并不完全确定 任何帮助表示赞赏
  • 如何使用 didMoveToView 作为 initWithSize ?

    我将 Xcode 更新到版本 6 从那时起 我就无法使用以前在 Xcode 5 中使用 Objective C 编写的代码了 有一些新文件 GameScene h 和 GameScene m 以及 GameScene sks 而不是 MyS
  • SDK 和 iOS 部署目标。

    我使用最新的 SDK 4 1 构建项目并设置 iOS 部署目标 3 0 如果我使用4 0 sdk的某些方法 我可以在真正的iPhone 3 0上运行我的项目吗 您只能在 OS 3 设备上运行您的项目 如果有条件地编码围绕您想要使用的 OS
  • 使用标识符启动 iPhone 应用程序

    我正在尝试在我的应用程序中启动应用程序 例如 如果我按下 testApp1 中的按钮 它应该打开 testApp2 有没有办法用应用程序标识符来做到这一点 我听说过一种名为的未记录方法launchApplicationWithIdentif
  • 在 UIViewRepresentable CollectionView(包装的 UICollectionView)中使用 UICollectionViewCell 的 SwiftUI 视图

    我必须更换现有的SwiftUI List的视图UICollectionView 因为应用程序设计已更新 并且新设计对于 SwiftUI 来说非常复杂 因此必须作为自定义实现UICollectionViewFlowLayout 所以视图 现在
  • 如何将设备上未保存的图片上传到dropbox帐户?(IOS)

    Dropbox RestClient 仅保存文件 所以我想先将图像保存在本地文件夹中 然后上传它 结果它保存了文件 但它已损坏 NSString localPath NSBundle mainBundle pathForResource I
  • AdMob 和 DFP 广告联盟之间的区别?

    我正在尝试在我的 iOS 应用程序上显示横幅广告和插页式广告 但现在我对广告网络感到困惑 AdMob 与 DFP 有何不同 哪一种更适合投放广告 有人可以提供帮助吗 提前致谢 AdMob 是一个广告网络 作为发布商 您可以通过展示从网络投放
  • 找不到 Cocoa/Cocoa.h 文件

    我在用XMPPFramework在我的应用程序中 我已将 Cocoa Cocoa h 导入到我的 m 文件中 但是当我构建项目时Xcode显示错误 错误 未找到 Cocoa Cocoa h 文件 我该如何解决这个错误 如果您正在为 iOS
  • Objective-C 点表示法与类方法?

    请注意 我特别指的是点表示法与类方法一起使用 而不是与实例方法一起使用 出于好奇 我想看看如果我尝试在类方法中使用 Objective C 点表示法语法会发生什么 我的实验如下 import
  • iOS 搜索栏不显示结果

    更新 这实际上有效 我的自定义单元格的样式尚未出现 因此单元格看起来是空白的 那我怎样才能得到searchResultsTableView使用我的自定义单元格 我在表格视图中实现了搜索栏 当我调试时搜索 过滤所有工作 但是当我在搜索栏中输入
  • dispatch_semaphore_t 重用 - 我在这里缺少什么?

    我有一些代码 其中使用dispatch semaphore t 来表示操作完成 当信号量是成员变量时 它的行为似乎不正确 我将展示有效的示例代码和似乎无效的示例代码 implementation someClass dispatch sem
  • 具有隐式授权的 OAuth 应用程序中的客户端模拟

    来自 OAuth 草案 隐式section https datatracker ietf org doc html draft ietf oauth v2 31 section 1 3 2 在隐式授权流程期间发出访问令牌时 授权服务器不对客
  • TestFlight 安装的应用程序因 Swift 包管理器依赖项而崩溃

    我们已经迁移了一些 CocoaPod 依赖项 以便在 Xcode 11 中使用 Swift Package Manager 进行构建和链接 但是 每当我们将应用程序提交到 AppStore Connect 并使用 TestFlight 进行

随机推荐

  • Heroku 新手:将我的应用程序推送到 Heroku 时出错 [重复]

    这个问题在这里已经有答案了 我使用的是 Ubuntu 10 04 通过遵循教程在这里 我已经创建了Heroku帐户 安装了GIT and Heroku成功地 我已上传 SSH 密钥并将 heroku 添加到我的系统 PATH 中 之后 我做
  • 为什么 python 中的 \n 给出两个空行?

    我不明白为什么 n 在输出中给出两个空行 例如 gt gt gt def my function print ABC print n print DEF gt gt gt my function ABC First blank line S
  • Gson Json 解析器 数组的数组

    想要解析一些 Json 并解析出数组的数组 不幸的是我不知道如何处理 json 中的嵌套数组 json type MultiPolygon coordinates 71 25 42 33 71 25 42 33
  • 使用幂运算 **0.5 的效率比 math.sqrt 低?

    引用自 Python 编程 计算机科学简介 我们可以取平方根 使用求幂 使用 math sqrt 效率更高一些 有点 但到什么程度 如何呢 理论上 哈马尔的回答 and 达菲莫的回答是很好的猜测 但实际上 在我的机器上 它是not更高效 g
  • 将 C 转换为 nasm 汇编

    我尝试将我的 C 代码转换为 GCC 汇编 通过输入 gcc S masm intel 或 pg c 或 gcc S prog c 但它给了我 MASM 代码 尽管我需要 NASM 代码 我想知道你是否可以帮我将我的 c 程序集转换为 NA
  • rake db:migrate 由于 rake 版本差异而被中止[重复]

    这个问题在这里已经有答案了 我收到错误 rake db migrate trace rake aborted You have already activated rake 10 1 1 but your Gemfile requires
  • 使用 Scala 2.10 反射如何列出 Enumeration 的值?

    有以下枚举 object ResponseType extends Enumeration val Listing Album Value 如何获取其值列表 如果您想彻底了解这一点 您需要检查您的符号是否具有Value作为超类型 def v
  • 如何从随机日期中得到下周四?

    我想做的是 你有一个随机日期列表 它永远不会相同 所以它必须是一个通用公式 但你可以得到任何日期 一年中的任何日期 然后每个星期四都是一个日期的开始新的一周 对于每个日期 您将日期设置为大于前一个且小于星期四的星期四 由于我含糊其辞 请举例
  • 从默认样式继承样式

    在我的项目中 文本框有一个自定义样式 它定义为 因此它默认应用于所有文本框子控件 我需要创建另一种基于默认样式的样式 但是如何在 BasedOn 属性中指定我的新样式应使用默认样式 使用您想要扩展的控件的类型 BasedOn StaticR
  • 使用Qt的QLabel点击事件?

    我是 Qt 新手 有一个问题 I have QLabel and QLineEdit对象 并且当QLabel单击文本 我想将此文本设置为QLineEdit 我也读过QLabel没有点击信号 你能解释一下我该如何做到这一点并为我编写代码吗 要
  • EntityCollection Clear() 和 Remove() 方法

    删除 EF 实体的所有集合项的正确方法是什么 在下面的代码中 DocumentItems 是文档的相关文档项的集合 此代码在 Clear 上继续 但在 SaveChanges 上失败 因为相关项目通过 FK 连接到其文档 并且 FK 是强制
  • 如何查询 MongoDB 来测试某个项目是否存在?

    MongoDB 是否提供查找或查询方法来根据任何字段值测试某个项目是否存在 我们只想检查是否存在 而不是返回该项目的完整内容 由于您不需要计数 因此您应该确保查询在找到第一个匹配项后返回 自从计数性能不理想 这一点相当重要 以下查询应该可以
  • pandas 对象没有属性名称 Series

    import pandas as pd numbers 1 2 3 4 5 ser pd Series numbers print ser 我用 python 为 pandas 系列编写了这段代码 但它给了这个 属性错误 模块 对象没有属性
  • 使用OpenCV访问IP摄像头

    无法访问视频流 任何人都可以帮我获取视频流吗 我已经在谷歌中搜索了解决方案 并在堆栈溢出中发布了另一个问题 但不幸的是没有什么可以解决问题 import cv2 cap cv2 VideoCapture cap open http 192
  • Travis CI 测试具有相应环境变量集的分支

    我有一个项目正在尝试使用 Travis CI 自动化测试 我有一个 dev 分支和一个 test 分支 它们有不同的环境变量 例如 在 dev 分支上 我需要连接到由环境变量指定的与测试分支不同的 API 那么 当我在 Travis 上的
  • 不能抛出 DataAccessException 类型的异常;异常类型必须是 Throwable 的子类

    我的源代码如下 它有一个错误 不能引发 DataAccessException 类型的异常 异常类型必须是 Throwable 的子类 我不明白为什么会发生错误 让我知道 谢谢 package com sds afi cosmos cmm
  • 处理 PyLint 不一致返回语句的警告

    我正在某些代码上运行 PyLint 并收到警告 函数中的所有 return 语句都应该返回表达式 或者都不应该返回表达式 不一致的返回语句 这是我的代码 def determine operand count opcode form opc
  • 如何查看 Reader 是否处于 EOF?

    我的代码需要读入整个文件 目前我正在使用以下代码 BufferedReader r new BufferedReader new FileReader myFile while r ready String s r readLine do
  • 使用 StructureMap 进行单元测试

    我在 DI IOC 的 Web 项目中使用 StructureMap 它工作完美 但我不知道如何使用 StructureMap 编写单元测试 我应该像在 global asax 中那样在 AssemblyInitialize start S
  • UICollectionView 将手指拖动到单元格上以选择它们

    Using UICollectionView 是否可以通过将手指拖动到其中几个单元格上来选择多个单元格 例如 如果您将手指拖动到一行 6 上 然后向下拖动到下一行 它将选择所有这些 尝试了一些简单的事情 UISwipeGestureReco