点击 MKAnnotation 来“选择”它真的很慢

2023-11-24

在点击 MKMapView 上的注释和显示标注之间有近 0.5 秒的延迟。

有谁知道为什么会出现这种情况,以及当用户点击地图时如何使其立即响应?

即使用户位置注释在点击时在标注中显示“当前位置”,也会发生这种情况。我希望它在点击时立即显示,没有奇怪的延迟。

编辑:我认为这是由于 didSelectAnnotationView 调用的 setSelected 函数造成的。 setSelected 有一个“动画”属性,可能会减慢速度。如何消除该动画?


经过大量研究后,我找到了解决方案!虽然有点老套,但是却很有魅力。

秘密在于,当关闭地图缩放时,didSelect 侦听器会立即触发。由于我们需要缩放(当然),我们需要做的是,暂时禁用缩放,只是为了 didSelect 事件的那一刻!

在斯威夫特中:

let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:)))
gestureRecognizer.numberOfTapsRequired = 1
gestureRecognizer.numberOfTouchesRequired = 1
gestureRecognizer.delegate = self
mapView.addGestureRecognizer(gestureRecognizer)

and

@objc func handleTap(_ sender: UITapGestureRecognizer? = nil) {
    // disabling zoom, so the didSelect triggers immediately
    mapView.isZoomEnabled = false
    DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
        self.mapView.isZoomEnabled = true
    }
}

该手势事件在 didSelect 事件之前触发。因此,在调用 didSelect 事件的那一刻,缩放功能就会关闭,并且会立即触发!

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
    mapView.isZoomEnabled = true // Not really necessary
    // Triggered immediately, do something
}

注意:这会禁用地图的双击手势,但我猜它们不会被太多使用。因此,如果您想要快速响应,则需要忍受它!

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

点击 MKAnnotation 来“选择”它真的很慢 的相关文章

  • ios 8 核心数据崩溃

    保存时 CoreData 发生崩溃 2014 09 16 09 51 58 273 My app 2678 105246 Terminating app due to uncaught exception NSInvalidArgument
  • 删除后台 moc 中的对象然后在主 moc 中刷新它会导致 NSFetchedResultsController 更新崩溃

    我遇到了一个NSObjectInaccessibleException我无法理解 Terminating app due to uncaught exception NSObjectInaccessibleException reason
  • 适用于 iOS 的 Google Cast SDK 2.3.0 不支持 64 位

    似乎是适用于 iOS 的 Google Cast SDK 2 3 0 版本 https developers google com cast downloads GoogleCastFramework 2 3 0 Release zip停止
  • 新的 FUITableViewDataSource - 如何使用?雨燕3

    刚刚更新到较新的 FirebaseUI Pod 有些事情发生了变化 但其中最大的变化之一是 FUI 表视图的工作方式 我让它在旧版本上运行良好 但在下面遇到了困难 并且缺乏文档 示例 self dataSource FUITableView
  • Firebase 连接管理器应仅返回一个结果

    我正在关注位于以下位置的文档 https www firebase com docs ios guide offline capability html section connection state https www firebase
  • 使用隐藏的 SFSafariViewController 获取 Safari cookie

    我正在阅读以下关于从移动网页到本机 iOS 9 应用程序对用户进行身份验证的文章 并且想知道如何最好地实现类似于下面讨论的隐藏控制器的隐藏 safari 视图控制器 https library launchkit io how ios 9
  • 对 UIImage 进行方形裁剪,导致图像拉伸

    当尝试执行 UIImage 的中心裁剪时 我得到以下结果 左侧是原始图像640 1136 右边是适合正方形的裁剪图像UIImageView at 320 320 turns to 我对比率元素进行了相当多的修改 以便它可以正确检测要修剪的量
  • iOS:从非图像数据生成图像(Godus,如风景)

    所以看到图像后Godus http www kickstarter com projects 22cans project godus我想知道如何生成简单的 非交互式的 2D 图像 with 不同高度或层数的颜色不同就像下面的图片一样 我只
  • 在 iOS 中录制音频并永久保存

    我制作了 2 个 iPhone 应用程序 可以录制音频并将其保存到文件中并再次播放 其中之一使用 AVAudiorecorder 和 AVAudioplayer 第二个是苹果的在这里说话 http developer apple com l
  • 在 Interface Builder 中的资产目录上使用图像

    是否可以直接在界面生成器上使用添加到资产目录中的图像 这是怎么做到的 在 UIImageView 属性上 我看不到任何引用资产目录上任何图像的选项 Import the images into the xcassets folder 单击右
  • Swift 对异步编程有什么语言级别的支持(如果有)?

    当应用程序必须通过不可预测的网络 例如智能手机应用程序 进行通信时 异步编程对于响应式用户界面来说是必须的 用户界面必须保持响应 同时等待结果从互联网上某处的服务器返回 在大多数语言中 应用程序程序员必须实现自己的状态机 可能使用闭包 来响
  • iOS 内存警告

    我正在尝试使用从 Parse 数据库下载的图像填充集合视图 但我收到内存警告 然后偶尔崩溃 有谁知道其他应用程序如何设法呈现这么多图像而不崩溃 有人可以告诉我如何优化我已有的东西吗 这是所有相关代码 https gist github co
  • iOS 中的等宽字体是什么?

    我想要在我的 iOS 应用程序中为 UILabel 使用等宽字体 不幸的是 我找不到一个 甚至 美国打字机 实际上也不是等宽的 XCode 中可用的等宽字体是什么 iOS 等宽字体 Courier Courier Bold Courier
  • 从 Core Data、iOS 获取最后插入的项目

    有没有办法获取核心数据数据库中最后插入的项目 这将返回最后插入的对象 setFetchLimit 1 和 setFetchOffset 所有条目数 1
  • swift 中的负数模

    负数模如何在 swift 中工作 当我执行 1 3 时 它给出 1 但余数是 2 其中有什么问题 雨燕余数运算符 计算余数 整数除法 a b a a b b where 是截断整数除法 在你的情况下 1 3 1 1 3 3 1 0 3 1
  • 如何使用自签名证书为 TLS 创建 iOS NWConnection?

    我正在尝试将 Apple 的新 NWConnection 类用于我的 MQTT 客户端 为了进行测试 我需要能够创建到本地测试代理的 TLS 连接 该代理具有自签名证书 到目前为止 我只是使用以下命令设置连接 self connection
  • 在WKWebview中设置useragent

    如何在 WKWebView 中设置自定义用户代理字符串 我正在尝试嵌入我的应用程序的版本 以便我的服务器端可以看到可用的功能 我找到了以下方法 let userAgent MyApp 1 33 7 request setValue user
  • 打印附加结构(swift 4)

    我有三个 textifled 用于将数据附加到结构中 如何打印我附加的内容 现在我收到一条错误消息 import UIKit class ViewController UIViewController IBOutlet var c UITe
  • 具有多种自定义单元格类型的 RxSwift 表视图

    我想知道是否有任何代码示例RxSwift当我可以在一个表视图中使用多个自定义单元格时 例如 我有两个部分 第一部分有 10 个单元格 类型为CellWithImage标识符和第二部分有 10 个带有类型的单元格CellWithVideo标识
  • 如何自动为 Swift 类创建初始化程序?

    UPDATE 使用结构而不是类 struct 在很多方面都更好 它有自己的初始化器 这是我的模型课 是否有可能创建init自动方法 每次我都必须将所有变量一一初始化 这会花费很多时间 class Profile var id String

随机推荐

  • Rails:无法提交通过 Ajax 加载的远程表单

    Goal 我有一个包含来自 Rails 后端的项目列表的页面 我希望能够通过 Rails UJS 使用 Ajax 调用来编辑该列表中的一行 Approach 我在每行的末尾添加了一个编辑按钮 编辑按钮是一个link to remote gt
  • 生成随机加权值

    Edit 我重写了这个问题 希望目标更清晰一些 这是这个问题的扩展问题here 我真的很喜欢中提供的功能这个答案 在上面的答案中 我们可以设置达到极限的概率 较高的数字产生较高的概率获得较低的数字 反之亦然 问题是我必须设置 3 组的概率
  • 如何在 Perl 中创建哈希的哈希?

    根据我目前对 Perl 中哈希值的理解 我希望这段代码能够打印 hello world 它什么也不打印 a b b str hello a 1 b b b str world a 2 b print a 1 str a 2 str 我假设哈
  • 如何在Eclipse中设置SplashScreen?

    我的应用程序会在启动主窗口之前加载启动屏幕 如何设置 Eclipse 中运行的启动屏幕 NetBeans 中有一个位置可以放置 splash splashScreen png 以便应用程序可以从 SplashScreen 启动 Eclips
  • 在页面中央显示图像

    我有一个图像 加载图像 我希望该图像显示在页面的中心 我怎样才能做到这一点 我写的代码是 img loading position absolute left 0px top 0px z index 1 如何让该图片始终显示在页面中央 发现
  • TypeScript 编译器对 let 的计算方式与 const 不同

    以下是鲍里斯 切尔尼 Boris Cherny 的第 64 页编程 TypeScript 考虑这样的 JavaScript 函数 function warnUser warning if warnUser wasCalled return
  • 如何使用Android的CacheManager?

    我目前正在开发一个使用 http 请求获取图像的 Android 应用程序 如果我可以缓存这些图像以提高性能和带宽使用 那就太好了 我在 Android 参考中遇到了 CacheManager 类 但我真的不知道如何使用它 也不知道它的真正
  • 在Python中创建一个具有最大长度的空双端队列?

    我正在查看 Python 双端队列的文档 看起来构造函数是deque iterable maxlen 是否没有办法创建一个具有最大长度的空双端队列 即 不指定可迭代对象 您可以直接提供列表文字 因此不必在单独的行上声明任何内容 gt gt
  • 按任意时间间隔对 DateTime 进行分组

    我有一个项目类的 IEnumerable 定义如下 public class Item public DateTime Date get private set public decimal Value get private set pu
  • WPF:将虚拟文件拖放到 Windows 资源管理器中

    我正在开发一个类似于 dropbox 的应用程序 并在 WPF 列表视图上显示远程文件 我想将这些元素拖放到 Windows 资源管理器中 我见过这样的代码 var dataObject new DataObject DataFormats
  • 在 Windows 8.1 中运行 Visual Studio 6 C++

    我最近将系统迁移到 Windows 8 1 不幸的是 像其他人一样 我无法再启动 Visual Studio 6 软件在启动时崩溃 闪屏 我知道有一些解决方法 可以在较新的 IDE 中使用 vc6 进行编译 但这对我不起作用 因为我必须编译
  • IIS Express 为每个请求加载和卸载模块

    我们有一个 ASP NET 项目在调试时使用 IIS Express 启动VS2013 然后加载解决方案 构建解决方案并在调试模式下启动Web应用程序后 输出窗口列出了一堆已加载和卸载的DLL 经过一番搜索后 我发现 IIS Express
  • Redis 是单线程的。那我为什么要用生菜呢?

    Redis 4 0之后 Redis可以多线程执行一些功能 1 删除后台对象等 但Redis通常仍然使用单线程 常见问题解答 Redis 所以我觉得生菜没什么用 Lettuce 是 Redis 客户端 可以在 1 个连接中使用多个线程 但 R
  • 如何确保提交到 ThreadPoolExecutor 然后取消的 FutureTask 的垃圾回收?

    我正在提交Callable对象到ThreadPoolExecutor他们似乎一直留在记忆中 使用 Eclipse 的 MAT 工具查看堆转储 可以看到Callable对象正在被引用FutureTask Sync s callable多变的
  • eclipse中“JUnit插件测试”和“JUnit测试”之间的区别

    在eclipse运行命令中 有两种选择 JUnit Plug in Test and JUnit Test 之前 我尝试启动 eclipse 插件测试 org eclipse jdt ui tests refactoring 我遇到了一些问
  • 如何使用 C++ 在 Windows 中复制和粘贴文件?

    我已经用谷歌搜索过这个 但我仍然对如何使用它感到困惑 我正在制作一个文件管理器 我希望能够将文件复制并粘贴到新目录中 我知道要复制我需要使用file copy 但我不确定如何将其实现到我的代码中 我想使用 fstream 来做到这一点 如果
  • 缓存生成器

    最近的一个类似问题 isinstance foo types GeneratorType 还是inspect isgenerator foo 让我好奇如何一般地实现这一点 实际上 拥有一个生成器类型的对象似乎是一个普遍有用的东西 它将在第一
  • D3树:用线代替对角线投影

    我正在使用 d3 js 创建一棵树这个例子 这可以完美地处理我拥有的数据并产生期望的结果 除了一个细节 我不想要那些wiggly节点之间的连接线 我想要一条干净简单的线 谁能告诉我如何制作它 我一直在查看 d3 js 的 API 文档 但没
  • WPF WebBrowser 浏览器版本

    WPF WebBrowser 控件是否取决于用户计算机上安装的 IE 版本 或者它是否使用跨计算机一致的单独库 我读到它只能在 IE7 模式下呈现 但我想确保没有安装 IE 或由于某种原因仍在 IE6 上的用户不会出现任何问题 The MS
  • 点击 MKAnnotation 来“选择”它真的很慢

    在点击 MKMapView 上的注释和显示标注之间有近 0 5 秒的延迟 有谁知道为什么会出现这种情况 以及当用户点击地图时如何使其立即响应 即使用户位置注释在点击时在标注中显示 当前位置 也会发生这种情况 我希望它在点击时立即显示 没有奇