自定义控件-UIControl

24、iOS开发:静态表格视图数据展示与自定义UIControl控件创建 本博客详细介绍了如何在iOS开发中使用静态表格视图展示餐厅详情数据,并通过创建自定义的UIControl子类RatingsView实现星级评分功能。同时,还讲解了如何为自定义控件添加触摸事件支持、实现取消按钮的unwind方法以及创建评论表单视图控制器,从而构建一个完整的餐厅信息展示与用户交互功能的应用。 阅读详情
UIControl是控件的基类,例如:按钮,滑块等将用户的目的传递到应用程序中。UIContol不能直接的实例化,它只能通过继承的方式为子类提供公共的接口和动作结构。

UIControl的主要角色是定义一套接口和基础实现,为了当确定的事件发生的时候(比如点击了按钮)准备好动作消息(Action)并开始派发它们到自己的目标(Target,eg:UIViewController)。

UIControl类通常也包含多种设置和获取控件状态的方法-例如,决定一个控件是否使能或者高亮状态-和它定义了一些跟踪(在控件范围内)触摸事件的方法。这些跟踪方法可以被UIControl的子类所继承。

子类化注意事项

你想扩展一个UIControl子类可能是下面两个原因:
•通过特殊的事件(UIEvent)观察或者修改派发的动作消息(action)给目标(target).
实现方法,重载sendAction:to:forEvent:,评估传入的方法,目标对象,或者事件的位掩码,并按要求继续。
•提供自定义的跟踪行为(例如,改变高亮的外观)


准备并发送动作消息

响应给定的事件,转发一个动作消息给应用程序派发给目标。

- (void)sendAction:(SEL)action
                to:(id)target
          forEvent:(UIEvent *)event
参数表
action
选择器识别的消息,它不能为空
target

目标对象—动作消息发送的对象,如果为空,接受对象遍历响应链并发送动作消息给第一个愿意影响的对象
event

一个代表事件的对象(在UIControl中很常见)它产出动作消息。事件可以是空的如果动作直接被调用而不是需要通过一个事件生成。例如,一个值改变消息可能是因为程序执行的结果,而不是用户触摸的结果

UIControl通过转发一个目标动作给单例UIApplication(在它的sendAction:to:fromSender:forEvent:方法中)来实现这个方法来派发给它的目标,或者如果它没有确定的目标,派发给响应链中第一个愿意处理这个消息的对象中。子类可能要重载这个方法来观察或者修改动作转发的行为。每进行一次指定控件的事件,可能会重复用sendActionsForControlEvents:这个方法的实现,



发送动作消息到给定的控制事件

- (void)sendActionsForControlEvents:(UIControlEvents)controlEvents

参数表
controlEvents

位掩码,其主标志指定发送哪个动作消息到控制事件
UIControl实现这个方法来发送所有controlEvents的动作消息,在进程中重复调用,查找目标和动作列表在addTarget:action:forControlEvents:.之前构造。




在内部的派发表中给特殊时间添加一个目标和动作
- (void)addTarget:(id)target
           action:(SEL)action
 forControlEvents:(UIControlEvents)controlEvents

参数表
target

目标对象-动作消息的发送对象,如果它为空,那么将会搜索响应链中愿意响应这个动作消息的对象
action

一个选择器识别的动作消息,它不能为空
controlEvents

一个位掩码识别的被消息动作发送的控制事件


你可能会多次调用这个方法,并且你可能需要为一个特殊的事件识别多个目标-动作组,动作消息可以是可选的包含发送者和事件作为参数
当你调用这个方法的时候,目标没有被保留。



在内部派发表中将特定事件的目标和动作移除

- (void)removeTarget:(id)target
              action:(SEL)action
    forControlEvents:(UIControlEvents)controlEvents


参数表
target

目标对象—动作消息的发送对象,传入nil可以移除动作和指定控制事件的所有目标
action
一个识别动作的选择器,出入NULL来移除所有的动作消息对
controlEvents
一个位掩码识别的,被消息动作发送的控制事件



返回所有跟动作事件和特殊指定控制事件相关的动作

- (NSArray *)actionsForTarget:(id)target
              forControlEvent:(UIControlEvents)controlEvent


参数表
target

目标对象—动作消息的发送对象,传入nil可以移除动作和指定控制事件的所有目标。你必须传入一个相匹配的明确目标,不要传入nil
controlEvent
一个位掩码识别的被消息动作发送的控制事件
一个包含NSString类型的方法名字的数组或者没有与控制事件相关的方法则则为nil





返回与接受者相关联的所有目标对象

- (NSSet *)allTargets

集合里面的目标是动作消息的接受者,





返回与接受者相关联的所有控制事件
- (UIControlEvents)allControlEvents

一个或者多个UIControlEvents 常量指定与当前接受者相关联的的控制事件



存取方法控制属性

@property(nonatomic, readonly) UIControlState state

一个或者多个UIControlState位掩码常量来指定UIControl对象的状态


enum {
UIControlEventTouchDown = 1 << 0,
控件被按下去的事件
UIControlEventTouchDownRepeat = 1 << 1
控件被重复点击的时间,点击次数超过一次
UIControlEventTouchDragInside = 1 << 2,
在控件范围内按下并拖动的事件
UIControlEventTouchDragOutside = 1 << 3,
在控件范围内按下并在控件外面拖动的事件
UIControlEventTouchDragEnter = 1 << 4,
从控件范围外拖动到控件范围内的事件
UIControlEventTouchDragExit = 1 << 5,
从控件范围外拖动到控件范围内的事件
UIControlEventTouchUpInside = 1 << 6,
点击控件后在控件范围内释放触发事件
UIControlEventTouchUpOutside = 1 << 7,
点击控件后在控件范围外释放触发事件
UIControlEventTouchCancel = 1 << 8,
触摸取消事件
UIControlEventValueChanged = 1 << 12,
当控件的值发生改变时,发送通知。用于滑块,分段控件,以及其他取值控件。
UIControlEventEditingDidBegin = 1 << 16,
文本控件开始编辑时发送通知
UIControlEventEditingChanged = 1 << 17,
文本控件中的内容被改变是发送通知
UIControlEventEditingDidEnd = 1 << 18,
文本控件结束编辑的时候发送通知
UIControlEventEditingDidEndOnExit = 1 << 19,
文本控件内通过按下回车(或等价行为)结束编辑时,发送通知。
UIControlEventAllTouchEvents = 0x00000FFF,
通知所有触摸事件
UIControlEventAllEditingEvents = 0x000F0000,
通知所有关于文本编辑的时间。
UIControlEventApplicationReserved = 0x0F000000,
为应用程序预留
UIControlEventSystemReserved = 0xF0000000,
为系统内部框架预留
UIControlEventAllEvents = 0xFFFFFFFF };
通知所有事件



易语言开发高级组合框控件实战指南 本文还有配套的精品资源,点击获取 简介:易语言是一种面向中文用户的编程语言,易语言中的“自创高级组合框”是一个扩展了系统内置组合框功能的自定义控件。本课程详细介绍了如何通过易语言代码实现高级组合框的创建、管理及操作,包括处理消息、加入项、设置选中项和项目文本等操作。此外,还包含了将图片加入组合框中的高级功能,帮助开发者理解和掌握易语言中自定义控件的开发流程。 1.... 阅读详情

相关推荐

易语言实现控件移动和调整大小实战

本文还有配套的精品资源,点击获取 简介:易语言是一种面向初学者的简单编程语言,它提供了丰富的API和命令来控制GUI元素。掌握控件的移动和大小调整是创建交互式应用的关键。本篇文档将详细介绍如何在易语言中通过设置控件位置和大小命令来移动和调整控件的尺寸,以及如何通过事件驱动的方式对控件动态响应用户的操作。此外,还包括对控件布局管理的探索,以及如何通过源码学习来提高控件动态行为...

weixin_29607511的博客 1553

iOS 通过UIControl,自定义控件

如:自定义一个可以点击的 图文 #import <UIKit/UIKit.h> @interface UD_Button : UIControl @property(nonatomic,strong)UIImageView *contentImageView; @property(nonatomic,strong)UILabel *contentLa...

abaodc2308的博客 250

易语言实现标题栏按钮功能的详解

本文还有配套的精品资源,点击获取 简介:易语言,一种面向中文用户的简单编程语言,使得编程更加亲民。在易语言中,标题栏按钮是一个可用于程序窗口标题栏上的交互元素,不仅增强了用户界面的交互性,还扩展了软件的功能。本文将介绍如何创建和管理标题栏按钮,包括控件创建、事件处理、按钮样式设计、逻辑控制和源码管理等关键环节。通过掌握这些知识点,开发者可以更好地进行界面设计和事件驱动编程,...

weixin_42351520的博客 1517

继承自UIControl的自定义控件,监测其所有行为的方法

继承自UIControl的自定义控件,检测其所有行为的方法- (void)sendActionsForControlEvents:(UIControlEvents)controlEvents; // send all actions associated with events 比如该控件的值有所改变[self sendActionsForControl

More reading and learning to become excellent 449

精易编程助手(很实用哦)

推荐给学易语言的用 非常实用 用他可以在网站上抓吧 取窗口进程 句柄 和可以分析网站 其他功能请自测

易语言-高仿精易编程助手窗口探测

高仿精易编程助手窗口探测源码

iOS UIControl控件

UIControl是UIView的子类,本身包含了一些属性和方法,但是不能直接使用UIControl类,只能通过继承的方式为子类提供公共的接口和动作结构。如果自定义一个可交互控件,可以继承于UIControl而非UIView。可查看iOS UIView控件。 1. UIControl的重要方法 action对象的分发 方法 说明 sendActionsForControlEvents:(UIControlEvent) 发送与指定类型相关的所有行为消息。我们可以调用控件的这个方法来发送参数co

假装你是大灰狼的专栏 926

e语言-易语言自定义组件边框样式源码例程

资源介绍:源码通过调用系统API:SetWindowLong实现了动态改变窗口组件边框样式的功能资源作者:

iOS UIControl 详解

一、UIControlEvents UIControlEventTouchDown 单点触摸按下事件:用户点触屏幕,或者又有新手指落下的时候。 UIControlEventTouchDownRepeat 多点触摸按下事件,点触计数大于1:用户按下第二、三、或第四根手指的时候。 UIControlEventTouchDragInside 当一次触摸在控件窗口内拖动

ihoudf 3068

VB中带源码的自定义控件,绘制曲线,用LINE,非API技术(转来)

VB中带源码的自定义控件,绘制曲线,用LINE,非API技术,对于初学者应用LINE绘制曲线还是相当有用,看着例子就能做!

好看的易语言UI界面(适合各种网络验证或辅助界面)

资源介绍:。好看的易语言UI界面(适合各种网络验证或辅助界面)。资源作者:。Plague°。资源界面:。资源下载:。

自定义可以响应事件的控件(继承自UIControl)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33895657的博客 367

易语言自定义外形按钮实现过程

在本篇内容里小编给大家分享的是关于易语言自定义外形按钮的制作方法,有兴趣的朋友们可以学习下。

UIKit: UIControl

转自:http://southpeak.github.io 我们在开发应用的时候,经常会用到各种各样的控件,诸如按钮(UIButton)、滑块(UISlider)、分页控件(UIPageControl)等。这些控件用来与用户进行交互,响应用户的操作。我们查看这些类的继承体系,可以看到它们都是继承于UIControl类。UIControl是控件类的基类,它是一个抽象基类,我们不能直接使用UIC

creamy521的专栏 408

Unity游戏开发实战:用柏林噪声打造3D随机地形(附完整C#代码)

本文详细介绍了如何在Unity游戏开发中使用柏林噪声算法生成3D随机地形,包含完整的C#代码实现。从基础柏林噪声原理到高级参数控制,再到性能优化和常见问题解决,帮助开发者掌握程序化地形生成技术,打造丰富多变的游戏世界。

weixin_29281941的博客 99

LibreNMS实战:5分钟搞定Docker部署与中文配置(附常见问题排查)

本文详细介绍了如何使用Docker在5分钟内快速部署LibreNMS,并完成中文界面优化。从环境准备到容器启动,再到中文语言包安装和系统配置调整,提供了完整的实战指南。同时,文章还包含常见问题排查和性能调优建议,帮助用户高效搭建网络监控系统。

e1f2g的博客 1281

UIControl IOS控件编程—IOS开发

UIKit提供了一组控件:UISwitch开关、UIButton按钮、UISegmentedControl分段控件、UISlider滑块、UITextField文本字段控件、UIPageControl分页控件。 控件是对UIView派生类的实用增强及补充,并可以直接附着于导航栏、表格单元,甚至更大的对象。 这些控件的基类均是UIControl,而UIControl派生自UIView类,

Xcocode_ios的专栏 453

2024 年高教社杯全国大学生数学建模竞赛题目【A/B/C/D/E题】完整论文+代码+结果

2024国赛A题参考论文。2024国赛D题参考论文。2024国赛E题参考论文。2024国赛B题参考论文。2024国赛C题参考论文。

qq_52590045的博客 5355

iOS自定义控件教程(四)UIControl - 幕后的英雄

上一篇文章我们介绍了UIView的触摸事件响应和简单动画,但是并没有将触摸事件封装。我们今天介绍Demo中最后一部分 —— 输出响应事件。 Github下载源码 我么知道Objective-C是采用消息机制(messaging)调用方法的,例如我们调用UIView的init方法 UIView * simpleView = [[UIView alloc] init]; 简单的描述

Secret Island 927

【华为2021校招】笔试题【通用硬件】

时间:2020/07/15 19:00 时长:60min 题型:40单选+5多选 难度:中等 考察范围:模电、数电、SI、EMC、电源、微机原理、计算机网络、材料

Jkcia的博客 4万+

自然语言处理6 -- 情感分析

1 概述 情感分析是自然语言处理中常见的场景,比如淘宝商品评价,饿了么外卖评价等,对于指导产品更新迭代具有关键性作用。通过情感分析,可以挖掘产品在各个维度的优劣,从而明确如何改进产品。比如对外卖评价,可以分析菜品口味、送达时间、送餐态度、菜品丰富度等多个维度的用户情感指数,从而从各个维度上改进外卖服务。 情感分析可以采用基于情感词典的传统方法,也可以采用基于深度学习的方法,下面详细讲解 ...

谢杨易的博客 5万+

《iOS 6核心开发手册(第4版)》——2.10节子类化UIControl

本节书摘来自异步社区《iOS 6核心开发手册(第4版)》一书中的第2章,第2.10节子类化UIControl,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.10 子类化UIControliOS 6核心开发手册(第4版)UIKit提供了许多预先构建的控件,可以直接在应用程序中使用它们。这些控件包括按钮、选项开关...

weixin_34239169的博客 115

硬核实战!Python爬虫从0到1完整版:爬取知乎热榜+回答内容(数据去重+Excel一键导出+避坑指南,零基础友好)

✔️ 适用人群:Python爬虫零基础、想练手实战爬虫、需要爬取知乎内容做数据分析、办公/学习素材整理的同学爬取知乎热榜全量数据(排名+标题+热榜链接+热度值) →自动跟进爬取每个热榜问题的回答内容(回答者昵称+赞同数+评论数+回答正文+发布时间) →数据清洗+智能去重→一键导出格式化Excel文件,所有功能一站式完成入门级难度,无复杂反爬破解、无分布式/代理池,纯requests请求+静态解析,新手能看懂、能运行、能修改;爬取速度快,热榜+回答全程仅需几十秒。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1460
上一篇: CGAffineTransform几种常用函数
下一篇: NSString 特性分析
joneOS
博客等级 码龄12年 1粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值