首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在CorePlot中触摸plotSymbol

在CorePlot中触摸plotSymbol,可以通过以下步骤实现:

  1. 遵循CPTPlotSpaceDelegate协议:首先,需要遵循CPTPlotSpaceDelegate协议,以便在plotSpace中处理触摸事件。
  2. 设置plotSpace的代理:在初始化plotSpace后,将其代理设置为当前对象,即plotSpace.delegate = self
  3. 实现plotSpace:shouldHandlePointingDeviceDownEvent:atPoint:方法:在此方法中,可以检查触摸点是否在plotSymbol上。可以使用plotSymbol.hitTest(point)方法来实现这一点,其中point是触摸点的位置。
  4. 实现plotSpace:shouldHandlePointingDeviceDraggedEvent:atPoint:方法:在此方法中,可以检查触摸点是否在plotSymbol上。可以使用plotSymbol.hitTest(point)方法来实现这一点,其中point是触摸点的位置。
  5. 实现plotSpace:shouldHandlePointingDeviceUpEvent:atPoint:方法:在此方法中,可以检查触摸点是否在plotSymbol上。可以使用plotSymbol.hitTest(point)方法来实现这一点,其中point是触摸点的位置。

以下是一个简单的示例代码:

代码语言:swift
复制
import CorePlot

class ViewController: UIViewController, CPTPlotSpaceDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        let graph = CPTXYGraph(frame: CGRect(x: 0, y: 0, width: 320, height: 200))
        let hostingView = CPTGraphHostingView(frame: graph.bounds)
        hostingView.hostedGraph = graph
        view.addSubview(hostingView)

        let plotSpace = graph.defaultPlotSpace as! CPTXYPlotSpace
        plotSpace.delegate = self

        let plotSymbol = CPTScatterPlot(frame: CGRect.zero)
        plotSymbol.dataSource = self
        plotSymbol.plotSymbol = CPTPlotSymbol.ellipsePlotSymbol()
        plotSymbol.plotSymbolMarginForHitDetection = 5.0
        graph.addPlot(plotSymbol)
    }

    func plotSpace(_ plotSpace: CPTPlotSpace, shouldHandlePointingDeviceDownEvent event: UIEvent, atPoint point: CGPoint) -> Bool {
        if let plotSymbol = plotSpace.plotAreaFrame?.plotArea().plotGroups.first?.plots.first as? CPTScatterPlot {
            if plotSymbol.hitTest(point) {
                // Handle touch down event on plotSymbol
                return true
            }
        }
        return false
    }

    func plotSpace(_ plotSpace: CPTPlotSpace, shouldHandlePointingDeviceDraggedEvent event: UIEvent, atPoint point: CGPoint) -> Bool {
        if let plotSymbol = plotSpace.plotAreaFrame?.plotArea().plotGroups.first?.plots.first as? CPTScatterPlot {
            if plotSymbol.hitTest(point) {
                // Handle touch dragged event on plotSymbol
                return true
            }
        }
        return false
    }

    func plotSpace(_ plotSpace: CPTPlotSpace, shouldHandlePointingDeviceUpEvent event: UIEvent, atPoint point: CGPoint) -> Bool {
        if let plotSymbol = plotSpace.plotAreaFrame?.plotArea().plotGroups.first?.plots.first as? CPTScatterPlot {
            if plotSymbol.hitTest(point) {
                // Handle touch up event on plotSymbol
                return true
            }
        }
        return false
    }
}

extension ViewController: CPTScatterPlotDataSource {

    func numberOfRecords(for plot: CPTPlot) -> UInt {
        return 3
    }

    func number(for plot: CPTPlot, field: UInt, record: UInt) -> Any? {
        switch field {
        case 0:
            return record + 1
        case 1:
            return record * 2
        default:
            return nil
        }
    }
}

在这个示例中,我们创建了一个简单的散点图,并实现了触摸plotSymbol的三个事件处理方法。在这些方法中,我们使用plotSymbol.hitTest(point)方法来检查触摸点是否在plotSymbol上。如果触摸点在plotSymbol上,我们将处理相应的触摸事件。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

触摸堆垛机控制系统的新玩法

利用触摸屏技术, 用户只需要用手指轻轻触碰显示屏上的文字或是符号就可以实现对主机的控制,使人机交互更为直接,用户使用更方便。 随着工业智能化的发展,PLC 工业得到广泛应用。...工业用触摸屏HMI 一般与PLC 系统配套使用,取代传统的机械按钮及指示灯,触摸屏上用相关符号来代表机械按钮,操作系统触摸屏常作为PLC 的输入和输出设备,通过相关的软件设计适合用户要求的控制画面...触摸堆垛机的应用 随着物流行业飞速发展,触摸屏技术已经堆垛机系统得到广泛应用。...不同的触摸屏具备的功能也有所不同。本文以某药业项目为例介绍工业触摸堆垛机系统的常见功能应用。...同时,触摸屏技术堆垛机系统的应用也会更加广泛,更加有效地增强系统的稳定性和安全性。

64420

虚拟现实的情感和触摸

疫情大流行之外, VR 中体验触摸和其他感官的能力可以帮助加强远距离家庭或因工作而失散的家庭之间的沟通。同时,视力受损的人也可以从这种技术受益。...让我们想象一下我们“餐厅环境”,我们有一个虚拟现实环境,是一家餐厅,两个人坐在一张桌子旁边,你可以在里面听到海洋或森林的背景声音。...,让用户1知道他是否成功的触摸到了用户2,真实世界,我们往往可以我们触摸到其他人之前得知自己触摸他人的动作是否安全。...同时我们要测试的一件事是意识是否与反应相匹配,回到图片中,初始的接触被送入AgentAgent的后台所有的感觉都被处理并发送给其他用户,在被触摸的用户作出反应之前,数据将以响应的形式被回传到发起触摸的用户...Muse 2冥想头带可收集的数据 之前的研究仅针对脑电波数据进行研究,我们还没有尝试利用加速度计和陀螺仪的数据,下一步的工作这些数据将被采纳。

58010
  • AndroidView位置和触摸事件详解

    本文Demo都是自定义View中进行的,文末有下载链接 View的位置参数 MotionEvent屏幕触摸事件 GestureDetector手势检测(单击,双击,长摁,滑动) 二、View的位置参数...top 3、Android新增参数 x、y:View左上角坐标 translationX、translationY:相对于父容器的偏移量(有get/set方法),正数往右,负数往左 注意:View平移过程...context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } 三、MotionEvent 1、手指触摸屏幕后产生的事件...,典型事件如下: ACTION_DOWN–手指刚触摸屏幕 ACTION_MOVE–手指在屏幕上移动 ACTION_UP–手指从屏幕上分开的一瞬间 2、MotionEvent获取点击事件发生的坐标 getX...存在问题:OnClick方法貌似没法用了哦,大概是因为onTouchEvent方法拦截了吧 改进:我觉得可以用GestureDetector对象来实现,这样也不妨碍拖动和点击,可以写个回调方法来实现点击

    1.5K51

    WPF .NET Core 3.1.19 版本 触摸笔迹偏移问题

    更新到 .NET 6 发布之前的, 2021.11.02 的 .NET Core 版本,都会存在此问题。 WPF 应用里面,如果在高 DPI 下,进行触摸书写,此时的笔迹将会偏移。...module initializer 代替原有的 IL 注入,但是代码有锅,导致初始化的逻辑没有正确初始化 最佳解决方法:升级 .NET Core 版本即可(等待 .NET 6 发布之后) 其次的解决方法是...user32.dll", SetLastError = true)] private static extern bool SetProcessDPIAware(); } 加应用程序清单也可以,加完之后,记得...VisualStudio 重新生成 特别感谢 ChristophHornung 提供的如上方法 此问题已修,但是需要等待 .NET 6 发布才同步更新到各个版本,包括 .NET Core 3.1 的版本 更多请看 WPF

    33320

    Android触摸事件_简述兴奋突触的传递过程

    一、基本概念 实际开发,经常会遇到与触屏事件有关的问题,最典型的一个就是滑动冲突。...对于触摸(Touch)触发的事件,Android,事件主要包括点按(onClick)、长按(onLongClick)、拖拽(onDrag)、滑动(onScroll)等,点按又包括单击和双击,另外还包括单指操作和多指操作...因为所有的事件操作都发生在触摸屏上,而在屏幕上与用户交互的就是各种各样的视图组件(View),Android,所有的视图都继承于View,另外通过各种布局组件(ViewGroup)来对View进行布局...由于onTouchEventView.java的源码比较长,这里贴重点,通过源码阅读,ACTION_UP的处理分支可以看到一个performClick()方法,从这个方法的源码可以看到执行了哪些操作...最上层用一个ViewFlipper作为容器,并检测flip手势操作。 难题:ViewFlipper的flip手势检测需要的MotionEvent会被各种子View的触摸检测给拦截了。

    69420

    Android单个View的触摸事件分发机制

    onLongClick---"); return false; } } 还有dispatchTouchEvent:注意,这是覆写父类Activity的方法,为该activity的控件的触摸事件进行分发...默认的是返回的false 在此声明:当屏幕进行触摸时首先是activity感受到该触摸事件,然后对事件进行分发处理,也就是说要不要传给activity的view进行处理。...activity首先将事件分发到你所定义的最外层的view,本程序我只定义了一个view,所以当dispatchTouchEvent返回false进行事件分发时就理所当然的分发给了我所定义的view...之前会触发onLongClick的listener,ACTION_UP结束后会触发onClick方法。...了解到触摸事件处理逻辑后博文刚开始的问题就好解决多了 当点击view时,只是执行onClick,而不执行onLongClick 当长按view时 ,在手抬起之前执行onLongClick,抬起之后会执行

    82620

    虚拟现实的情感和触摸(上)

    触觉设备和触觉的使用有助于各方之间传递触摸,机器学习可用于基于从其他感官设备收集的数据进行情绪识别以更好的远程通信。...疫情大流行之外, VR 中体验触摸和其他感官的能力可以帮助加强远距离家庭或因工作而失散的家庭之间的沟通。同时,视力受损的人也可以从这种技术受益。...首先讲述一下这一切开始的背景故事,我时常与海外数千英里之外的家人通话,电话我一直想要伸手抚摸正在与我交流的女儿,事实上我并不能真正接触她。我和我的教授谈了这件事,为什么我不能实现这一设想呢?...所以通过触摸,我们能够更深层次上体验情感,例如如果我们看到一块饼干、闻到一块饼干的味道,与我们手里拿着饼干的效果不同,这就是我的想法。我们试图虚拟现实重现那种接触的感受。...研究领域 相关研究领域 许多研究领域都将从我们的工作获益,例如关于我们的大脑如何工作、我们如何对触摸的事物进行分类、不同文化过程如何看待触摸(人们在世界不同的地区会对触摸有不同的看法),艺术和设计接触也会产生不同

    63110

    虚拟现实的情感和触摸(下)

    触觉设备和触觉的使用有助于各方之间传递触摸,机器学习可用于基于从其他感官设备收集的数据进行情绪识别以更好的远程通信。...疫情大流行之外, VR 中体验触摸和其他感官的能力可以帮助加强远距离家庭或因工作而失散的家庭之间的沟通。同时,视力受损的人也可以从这种技术受益。...牙科培训 老师和学生共享触感体验,他们现实的力度和动作,我不确定这些动作VR的表现,但他们在这个培训系统中用到了力度和动作,这相比其他研究与我们现在的研究非常接近。...每个人都喜欢买东西,网上买工具类的商品的情况下更有用,买衣服的时候却不那么有用,因为你无法触摸到布料纤维,而在买衣服的场景下,这是非常必要的。...未来展望 未来可穿戴设备通过接触实现物体识别,这属于物理触摸的部分,这可以帮助人和无生命的物体实现物体识别,例如你玩游戏时和化身之间的接触,不仅是用一个圆盘代替你,现在是一个有趣的简洁场景,你玩的时候如果撞到了其他人

    58210

    行为变更 | Android 12 不受信任的触摸事件

    触摸控制是 Android 系统同应用进行交互的主要方式。Android 12 采取了额外的措施,来确保触摸事件被正确地传递给了应该响应此事件的应用,以此确保触摸交互的直观和安全性。...具体地说,就是 Android 12 ,如果触摸事件是从一个不同的应用窗口传递的,那么此事件会被屏蔽。...如果您的应用不能使用上述 API,而是让触摸事件直接通过其窗口传递,那么 Android 12 它们可能无法按预期传递到下层。...之前,应用可以通过简单地使用一个全屏窗口,并将其标记为 FLAG_NOT_TOUCHABLE 来实现,如图 1 所示: 请注意,以前的操作系统版本,通过实际的 UI 元素进行的触摸事件,在这种情况下会传递到下层的窗口中...这样,您的 UI 外的触摸事件,将直接穿透到下层的窗口,不再被屏蔽。

    1.3K30

    WPF 触摸线程等待主线程窗口关闭会让主线程和触摸线程相互等待 原理方法一方法二

    这个问题的最简单复现步骤是触摸线程,也就是 StylusInput 线程,等待一个主线程的窗口关闭,此时就会出现主线程卡住的问题 这个问题有两个复现方法,第一个方法属于必现的方法,第二个方法属于概率的方法...开始说明问题之前需要大概讲一下 WPF 的触摸原理和这个问题的原理 原理 WPF 触摸下,是存在 Stylus Input 线程用于处理触摸相关的事情,在这个线程会调用 ThreadProc 进入循环...主线程需要等待触摸线程运行移除 PenContext 代码,触摸线程需要等待主线程关闭窗口,这时两个线程就无响应 所有的代码 github 方法二 触摸触发的过程,出现了窗口的关闭,会让主线程卡住...但是触摸的过程,触摸线程运行到第二层循环里。 void ThreadProc() { while (!...被释放,则跳出第二层循环 break; } FireEvent(/*触发触摸消息*/); // 当前触摸线程运行到这里 } } } 没有出现触摸的时候

    1.2K30

    WPF 底层 从手指触摸屏幕到笔迹屏幕显示中间的步骤

    更多有关协议部分请看 Windows 的 Pen 协议 规避了硬件设备,此时咱就不需要画精力去了解硬件设备的收集触摸点的机制,以及封装数据和系统的解包是如何做的 WPF 的触摸系统最底层使用的是...因此高性能的笔迹实现推荐通过 StylusPlugIn 的方法,触摸线程获取触摸点,详细请看 WPF 高速书写 StylusPlugIn 原理 从 WPF 使用 PenIMC WISPTIS 服务获取...首先笔迹的本质绘制就是将输入的离散的点,绘制成为 Geometry 几何加入到 WPF 的渲染 WPF 中提供了 Stroke 类用于协助以上计算,通过给 Stroke 输入离散的点,可以通过调用...这部分的逻辑很简单,请看 WPF 最简逻辑实现多指顺滑的笔迹书写 绘制到某个 Visual 里面之后,需要将 Visual 加入到 WPF 的视觉树 WPF 的渲染机制里面,将会依据视觉树上的元素的更改刷新视觉树的渲染内容...小伙伴也可以去抄 WPF 的源代码自己魔改 然后笔迹的绘制方式基本上可以选 Geometry 或 Image 的方式,加入到视觉树,或者重绘已有位图的方式 接着进入 DX 渲染管线部分,可以使用 WPF

    1.2K20

    有“贝”而“莱” 强势围观 | 4PPC30带控制功能的触摸工业收尘器的应用 023

    JZGKCHINA 工控技术分享平台 尊重原创 勿抄袭 勿私放其他平台 原创投稿 023 4PPC30带控制功能的触摸工业收尘器的应用 保勇前 摘 要 本文提出了一种新的工业收尘器设备电气控制系统的设计方法及实践应用...,工业收尘器设备的控制系统采用4PPC30触摸屏时节省了一个常规的PLC,同时采用BC0087实现了与各IO模块的通讯,保证了系统的实时性及高速响应能力。...二、4PPC30触摸屏电气控制系统的构成 常规的工业收尘器设备,通常采用变频电驱动风机,变频电机采用电压进行调频控制转速,收尘器通常有温度传感器对箱体进行温度监控,进口风管内安装有风量传感器检测风量...AS工程硬件树Ethernet插入ModbusTCPSlave,站号必须与BC0087的Node号一致。...Logical View添加程序与一个Visu画面,画面中加入各个需要显示的数据控件,如下图所示。 ProgramST编写程序对各个模块的数据进行读写。如下图所示。

    34210
    领券