深潜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

    相关文章

    使用MongoDB进行数据存储的操作流程

    《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

    Linux使用fdisk进行磁盘的相关操作

    《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

    C#使用HttpClient进行Post请求出现超时问题的解决及优化

    《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

    使用Python进行文件读写操作的基本方法

    《使用Python进行文件读写操作的基本方法》今天的内容来介绍Python中进行文件读写操作的方法,这在学习Python时是必不可少的技术点,希望可以帮助到正在学习python的小伙伴,以下是Pyth... 目录一、文件读取:二、文件写入:三、文件追加:四、文件读写的二进制模式:五、使用 json 模块读写

    使用zabbix进行监控网络设备流量

    《使用zabbix进行监控网络设备流量》这篇文章主要为大家详细介绍了如何使用zabbix进行监控网络设备流量,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装zabbix配置ENSP环境配置zabbix实行监控交换机测试一台liunx服务器,这里使用的为Ubuntu22.04(

    在Pandas中进行数据重命名的方法示例

    《在Pandas中进行数据重命名的方法示例》Pandas作为Python中最流行的数据处理库,提供了强大的数据操作功能,其中数据重命名是常见且基础的操作之一,本文将通过简洁明了的讲解和丰富的代码示例,... 目录一、引言二、Pandas rename方法简介三、列名重命名3.1 使用字典进行列名重命名3.编

    python安装完成后可以进行的后续步骤和注意事项小结

    《python安装完成后可以进行的后续步骤和注意事项小结》本文详细介绍了安装Python3后的后续步骤,包括验证安装、配置环境、安装包、创建和运行脚本,以及使用虚拟环境,还强调了注意事项,如系统更新、... 目录验证安装配置环境(可选)安装python包创建和运行Python脚本虚拟环境(可选)注意事项安装

    如何使用celery进行异步处理和定时任务(django)

    《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

    SpringBoot使用minio进行文件管理的流程步骤

    《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

    如何用Java结合经纬度位置计算目标点的日出日落时间详解

    《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2