深潜mobi_Swift进行目标动作深潜

2023-11-28 17:59

本文主要是介绍深潜mobi_Swift进行目标动作深潜,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

深潜mobi

Another design pattern

另一种设计模式

Target-Action is one of the common design patterns in Swift, and used in many frameworks and libraries. This short guide is here to explain what this pattern is used for, and is here to help you out.

Target-Action是Swift中常见的设计模式之一,并在许多框架和库中使用。 本简短指南在这里说明该模式的用途,并在这里为您提供帮助。

Difficulty: Beginner | Easy | Normal | Challenging

难度:初学者| 容易 | 普通| 具有挑战性的

先决条件: (Prerequisites:)

  • You can use gestures in a Single View Application, or use Gestures in the Playground to set up this project

    您可以在Single View Application中使用手势 ,也可以在Playground中使用手势来设置此项目

术语 (Terminology)

Design Pattern: A solution to commonly occurring problem in software design

设计模式:解决软件设计中常见问题的解决方案

要解决的问题 (The problem to be solved)

An object holds information that allows it to send information to another object when an even occurs.

一个对象保存的信息允许它在出现偶数时将信息发送到另一个对象。

This is often used in buttons and sliders.

通常在按钮和滑块中使用。

解决方案 (The solution)

An action selector identifies the method that will be invoked when an event occurs.

动作选择器标识事件发生时将调用的方法。

A target is the object to recieve the message when an event occurs. This is typically a controller (as in a view controller).

目标是事件发生时接收消息的对象。 这通常是一个控制器(如在视图控制器中)。

一个例子 (An example)

If we were to create a UIPanGestureRecognizer in Playgrounds we might develop the following code

如果我们要在Playgrounds中创建UIPanGestureRecognizer ,我们可能会开发以下代码

Image for post
Click for Gist 单击要点

Where viewDidLoad() creates the UIPanGestureRecognizer and adds it to the UIView. There is nothing special about this, however it is the former of these which we are going to look at now.

其中viewDidLoad()创建UIPanGestureRecognizer并将其添加到UIView 。 这没有什么特别的,但是我们现在要看看它们中的前者。

UIPanGestureRecognizer(target: self, action: #selector(handlePan(_:)))

The UIPanGestureRecognizer is initialized with a target and an action. Let us take this through step-by-step:

UIPanGestureRecognizer使用目标和操作进行初始化。 让我们逐步进行:

The target: This is the recipient of the messages sent by the receiver when a gesture is recognized. For UIPanGestureRecognizer to work this need to be set. In the example above, the target is set to self and is therefore the UIViewController MyViewController.

目标:这是识别手势时接收方发送的消息的接收方。 为了使UIPanGestureRecognizer起作用,需要对此进行设置。 在上面的示例中,目标设置为self,因此是UIViewController MyViewController。

Action: This is a selector that is actually a method implemented by the target to handle the gesture. This is a selector which means that the method it points to must be exposed to the @ObjC runtime — this means that the function header becomes @objc func handlePan(_ sender: UIPanGestureRecognizer) in the code above. This is because we need to make the method visible to ObjC (and can therefore be executed at runtime). Using Strings for selectors is deprecated (and error prone) meaning we use #selector expression to represent the property name as a selector. Now since we are sending the sender to the func handlePan(_ sender: UIPanGestureRecognizer) function.

行动:这是一个选择器,实际上是由目标实现以处理手势的方法。 这是一个选择器 ,这意味着它指向的方法必须公开给@ObjC运行时—这意味着函数头在上面的代码中成为@objc func handlePan( _ sender: UIPanGestureRecognizer) 。 这是因为我们需要使该方法对ObjC可见(因此可以在运行时执行)。 不推荐使用Strings作为选择器(并且容易出错),这意味着我们使用#selector表达式将属性名称表示为选择器 。 现在,由于我们将发送方发送到func handlePan(_ sender: UIPanGestureRecognizer)函数。

Using the parameters to decide where you are panning to by using sender.view! as passed through the sender parameter.

使用参数通过sender.view!决定平移到的sender.view! 通过sender参数传递。

Image for post
Click for Gist 单击要点

UIKit和AppKit之间的区别 (Differences between UIKit and AppKit)

UIKit (iOS) and AppKit (MacOS) both use the target-action design pattern. AppKit uses a control-cell architecture for most controls, where the control owns light-weight cell objects that hold the target and action properties for the control. The difference is subtle, but shouldn’t be too difficult for the more experienced developer!

UIKit(iOS)和AppKit(MacOS)都使用目标动作设计模式。 AppKit对大多数控件使用控件单元体系结构,其中控件拥有轻量级单元对象,这些对象包含控件的目标和操作属性。 差异是细微的,但对于经验丰富的开发人员来说应该并不困难!

结论: (Conclusion:)

This article has covered quite a few topics. Since target-action is frequently used in iOS I hope this has been a good use of your time, running through what the pattern can be used for, how we can use selectors and create functions that have practical use in iOS.

本文涵盖了很多主题。 由于target-action在iOS中经常使用,所以我希望这可以很好地利用您的时间,遍历该模式的用途,如何使用selectors以及创建在iOS中具有实际用途的功能。

If you’ve some questions about this (particularly about Swift) give me a shout over on Twitter.

如果您对此有任何疑问(尤其是有关Swift的问题),请给我在Twitter上大喊大叫 。

翻译自: https://medium.com/@stevenpcurtis.sc/swifts-target-action-deep-dive-e204144ee77f

深潜mobi


http://www.taodudu.cc/news/show-8371995.html

相关文章:

  • 深潜Kotlin协程(六):协程构建器
  • 电信增值业务许可证(IDC)申请方法
  • 办一个商业网站需要什么证件
  • 2010年度内资(私营)企业年检须知
  • 最新java自考简答题汇总_2020年4月全国自考报名时间汇总(最新)
  • 企业“年检”要及时否则经营异常都不知道
  • 【CCM-计传阅读树07】新刊速递 Asian Journal of Communication
  • 澳洲 学计算机,澳洲大学计算机专业世界排名
  • 澳大利亚计算机企业,澳大利亚工作排行
  • 大学生出国意向的调查
  • P2734 游戏 A Game
  • 【机器学习(一)】什么是机器学习、监督学习及无监督学习
  • 吴恩达机器学习课程笔记-Ⅰ
  • C++:继承、模板、CRTP:谈谈C++多态设计模式(三):函数模板
  • 用react完成一个个人简介页面
  • 机器学习笔记——机器学习定义
  • 机器学习—相关概念
  • 【个人简介】关于博主阅读指南
  • 计算机翻译的作用是什么,计算机在翻译中作用探析.doc
  • Linux运行wine假死,请教一个关于wine运行一会后自动关闭的问题
  • TokenGazer一问到底 | 第32期:研究员 vs Bytom
  • 《从有意义到有意思》_hinchi的一些文字收藏
  • 联合利华“双十一”再创佳绩,加速全渠道创新内容营销
  • 极致呈现系列之:Echarts日历坐标系的时光流转
  • 政府,事业单位 怎么对接短信平台发短信?
  • 爱快无线WIFI设备如何接入短信平台
  • 短信平台还不知道怎么选?
  • 货运物流订单短信怎么接入短信平台
  • 短信平台 -- 企业与用户便捷沟通的桥梁
  • TechNet中文网络广播office系列视频教程下载(二)(2007-02-28 09:29:42) 分类:Office...
  • 这篇关于深潜mobi_Swift进行目标动作深潜的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



    http://www.chinasem.cn/article/430064

    相关文章

    【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

    ✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

    业务中14个需要进行A/B测试的时刻[信息图]

    在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

    烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

    一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

    用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

    上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

    遮罩,在指定元素上进行遮罩

    废话不多说,直接上代码: ps:依赖 jquer.js 1.首先,定义一个 Overlay.js  代码如下: /*遮罩 Overlay js 对象*/function Overlay(options){//{targetId:'',viewHtml:'',viewWidth:'',viewHeight:''}try{this.state=false;//遮罩状态 true 激活,f

    利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

    示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

    [数据集][目标检测]血细胞检测数据集VOC+YOLO格式2757张4类别

    数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2757 标注数量(xml文件个数):2757 标注数量(txt文件个数):2757 标注类别数:4 标注类别名称:["Platelets","RBC","WBC","sickle cell"] 每个类别标注的框数:

    Python脚本:对文件进行批量重命名

    字符替换:批量对文件名中指定字符进行替换添加前缀:批量向原文件名添加前缀添加后缀:批量向原文件名添加后缀 import osdef Rename_CharReplace():#对文件名中某字符进行替换(已完结)re_dir = os.getcwd()re_list = os.listdir(re_dir)original_char = input('请输入你要替换的字符:')replace_ch

    SSM项目使用AOP技术进行日志记录

    本步骤只记录完成切面所需的必要代码 本人开发中遇到的问题: 切面一直切不进去,最后发现需要在springMVC的核心配置文件中中开启注解驱动才可以,只在spring的核心配置文件中开启是不会在web项目中生效的。 之后按照下面的代码进行配置,然后前端在访问controller层中的路径时即可观察到日志已经被正常记录到数据库,代码中有部分注释,看不懂的可以参照注释。接下来进入正题 1、导入m

    Temu官方宣导务必将所有的点位材料进行检测-RSL资质检测

    关于饰品类产品合规问题宣导: 产品法规RSL要求 RSL测试是根据REACH法规及附录17的要求进行测试。REACH法规是欧洲一项重要的法规,其中包含许多对化学物质进行限制的规定和高度关注物质。 为了确保珠宝首饰的安全性,欧盟REACH法规规定,珠宝首饰上架各大电商平台前必须进行RSLReport(欧盟禁限用化学物质检测报告)资质认证,以确保产品不含对人体有害的化学物质。 RSL-铅,