iOS开发学习笔记④ - 文本框 - 委托

iOS 委托代理(delegate)入门 **************************************************************                                                                               atany原创,转载请注明博主与博文链接,3Q 阅读详情

文本框(UITextField)

新建一个文本框:

CGRect textFieldRect = CGRectMake(40, 70, 240, 30);
UITextField *textField = [[UITextField alloc]initWithFrame:textFieldRect];

// 设置UITextField对象的边框模式,便于查看其在屏幕上的位置
textField.borderStyle = UITextBorderStyleRoundedRect;
[backgroundView addSubView:textField];

UIResponder

UIResponder是UIKit框架中的一个抽象类。子类有:

  • UIView
  • UIViewController
  • UIApplication 等等

UIResponder定义了一系列方法,用于接收和处理用户事件。子类会覆盖这些方法,实现自己的事件相应代码。

UIWindow有一个firstResponder属性指向第一响应者。例如,当用户点击UITextfield对象时,UITextfield就会成为第一响应者。当某个UITextfield对象或UITextView对象成为第一响应者时,屏幕会弹出键盘;还可以在代码中向UITextField对象发送becomeFirstResponder消息,使其成为第一响应者。如要关闭键盘,则发送resignFirstResponder消息。


设置UITextField的键盘

// 占位符文本
textField.placeholder = @"Type in";
// 换行键类型
textField.returnKeyType = UIReturnKeyDone;

其他一些有用的属性:

属性用法
autocapitalizationType设置UITextField对象的自动大写功能。包括none(关闭自动大写)、words(单词)、sentences(句子)、all characters(所有字母)四种类型
autocorrectionType启用/禁用(设置为YES/NO,下同)UITextField对象的拼写建议功能
enableReturnKeyAutomatically启用/禁用UITextField对象的换行键自动检测功能。如果将属性设为YES,UITextField对象会自动检测用户输入,并根据是否输入了文字启动/禁用换行键
keyboardType设置UITextField对象弹出的键盘类型,例如ASCII Capable、E-mail Address、Number Pad、URL
secureTextEntry启用/禁用UITextField对象的安全输入功能。蜀国设置为YES,会以原点代替用户输入的文字,类似于常见的密码文本框

委托(Delegation)

目标-动作(Target-Action)设计模式工作方式:当某个特定时间发生时,发生事件的一方会向指定的目标对象发送一个之前设定好的动作消息。

UITextField这类复杂的对象,使用委托设计模式。
通过为UITextField对象设置委托,UITextField对象会在发生事件时向委托发送消息,由委托处理该事件。

例如,对于UITextField对象文本内容的事件,由以下两个对应的委托方法:

- (void)textFieldDidEndEditing:(UITextField *)textField;
- (void)textFieldDidBeginEditing:(UITextField *)textField;

在委托方法中,通常应该将对象自身作为第一个参数。

eg.在试图控制器A的loadView方法中,将UITextField对象的委托设置为ControllerA自身:

textField.delegate = self;

接下来,在ControllerA.m中实现textFieldShouldReturn方法:

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    NSLog(@"%@", textField.text);
    return YES;
}

协议

凡是支持委托的对象,背后都有一个相应的协议(接口),声明可以向该对象的委托发送的消息。

声明协议的语法是,使用@protocol指令开头,后跟协议的名称。尖括号的NSObject是指NSObject协议,作用是声明包含NSObject协议额全部方法,最后使用@end指令结束。

@protocol UITextFieldDelegate <NSObject>

@optional

- (BOOL).....
- ......
- ......

@end

协议所声明的方法可以是必需的(required)or可选的(optional)。协议默认是必需。使用@optional指令,可声明为可选的。委托协议中的方法通常是可选的。

如果某个协议的方法是必需的,委托对象没有实现相应的方法,应用就会抛出异常。
为了防止此类问题,编译器会检查某个类是否实现了相关协议的必须方法。要让编译器能够执行此检查,必须将相应的类声明为遵守指定的协议,其语法格式为:在头文件或类扩展的@interface指令末尾,将类所遵守的协议以逗号分隔的列表形式写在尖括号里。

@interface ControllerA() <UITextFieldDelegate>
@end
iOS开发基础-delegate(委托) 1.定义 代理设计模式,是IOS中一种消息传递的方式,由代理对象、委托者、协议组成。 协议:用来指定代理可以做什么,必须做什么 代理:根据指定协议,完成委托方需要实现的方法 委托:根据指定协议,指定代理必须完成和可以完成的方法 2.作用 传值(逆向传值) 传递事件 3.传值 声明协议: NextViewController.h #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN //声明协议 阅读详情

相关推荐

双模音频解码器设计:USB+蓝牙LDAC平衡输出方案

音频解码器是数字音频系统中实现数模转换的核心组件,其性能直接决定音质保真度与系统延迟。基于高集成SoC的解码方案通过统一时钟域与片内DSP处理,有效抑制Jitter并简化硬件拓扑;结合全平衡模拟输出架构,可显著提升共模抑制比(CMRR)与信噪比(SNR)。该技术路径广泛应用于便携式Hi-Res音频设备、USB-C小尾巴DAC及蓝牙高解析耳机放大器等场景。本文围绕ES9038Q2M双模SoC展开,详解其在LDAC协议支持、UAC2.0兼容性及平衡电流型DAC输出方面的工程实现,为高性能、可量产音频硬件开发提供

weixin_42613018的博客 388

IOS文本框事件--委托方式实现

#pragma mark--------------UITextFieldDelegate method - (BOOL) textFieldShouldBeginEditing:(UITextField*) textField { NSLog(@"文本将要编辑.............\n"); return YES; } - (void) textFieldDidBegin

刘胡来 933

Vue项目实战:用DataV的dv-scroll-board打造高颜值滚动表格(附完整代码)

本文详细介绍了如何在Vue项目中使用DataV的dv-scroll-board组件打造高颜值滚动表格。从基础集成到高级配置,包括动态数据处理、深度样式定制、性能优化策略以及交互增强方案,帮助开发者快速实现企业级数据展示需求。特别针对样式优化和滚动表格的常见问题提供了实用解决方案。

weixin_30892037的博客 496

ios协议和委托

在iPhone开发协议和委托是常接触到的东西,到底什么是协议什么是委托,他们什么关系? 一 协议 (1)协议相当于没有与类相关联的接口,他申明一组方法,列出他的参数和返回值,共享给其他类使用,然后不进行实现,让用它的类来实现这些方法 (2)在任何一个类中,只有声明了协议,都可以实现协议里的方法。 (3)协议不是一个类,更没有父类了。 (3)协议里面的方法经常都是一些委托方法, 二 委托

新风作浪的博客专栏 1万+

地平线RDKX3初始配置与USB无线网卡

地平线X3无线网卡配置

Richard_Mei的博客 4076

把 ABAP Unit 测试放进本地类:让重构更安全、让测试更好找的组织方式

ABAP测试代码组织策略:单元测试与集成测试的合理存放位置 本文针对ABAP开发中测试代码组织混乱的问题,提出了一套系统化的解决方案: 单元测试应存放在被测类的本地测试include中(...CCAU或...T99),确保测试与代码同步演进且易于发现 跨对象测试(组件/集成/系统测试)应创建单独的全局测试类,并通过FOR TESTING和ABSTRACT进行防护 使用! @testing注释建立测试关系,使测试与被测对象明确关联,提高可发现性 针对不同技术栈(RAP/CAP/OData)提供了具体落地建议,

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1729

ios中关于delegate(委托)的使用心得

从开始从事OC工作到现在大概1年多了,从当初接触oc的"协议"的不明白,到现在代码中随处可见的委托,协议,其中感悟颇多。 首先,大家应该都明白的是委托是协议的一种,顾名思义,就是委托他人帮自己去做什么事。也就是当自己做什么事情不方便的时候,就可以建立一个委托,这样就可以委托他人帮自己去实现什么方法。 其次,我简单的总结了一下自己用到的委托的作用有两个,一个是传值,一个是传事件。

huifeidexin_1的专栏 14万+

【YOLO多模态检测顶刊】TGRS 2025范文解读,RGFNet 可见光-红外图像融合目标检测,2026年基于YOLO多模态融合属于发文热点,小论文和大论文通用,通读顶刊了解做实验和论文写作的全流程

🔥本文提出了一种反射率引导的渐进特征对齐网络(RGFNet)用于全天候无人机目标检测。该方法利用Retinex理论从可见光图像中提取光照不变的反射率特征,设计了反射率引导协同对齐模块(RCAM)实现跨模态双向特征对齐,并通过光照感知选择性融合模块(LSFM)在共享状态空间中进行高效特征交互。在DroneVehicle和DVTOD数据集上的实验表明,RGFNet分别达到81.4%和88.5%的mAP,显著优于现有方法。该方法有效解决了低光照条件下可见光-红外图像特征错位问题,为全天候无人机检测提供了新思路。

Ai缝合怪、助力小伙伴高效发论文 1077

IOS6 学习笔记(3)—— 委托协议(接口)

Object c中常常说到的委托其实就类似与java中的接口,java中定义一个接口时使用interface关键字,Object c中此关键字表示的却是类(java中的class关键字),在object c中定义委托使用的是@protocol关键字,协议只需要一个.h文件就可以了,引用的时候也是在.h文件中声明这个委托,在.m文件中实现其中的方法。 在java中定义接口 public in

嘻嘻哈哈 887

提交 ieee 手稿出现:Do not include the Reviewer PDF with my submission 怎么办

IEEE投稿Reviewer PDF选项说明 投稿时出现的"Do not include the Reviewer PDF with my submission"选项控制是否附带评审专用PDF文件。Reviewer PDF是系统自动生成包含所有投稿材料的完整PDF,用于同行评审。建议保持默认不勾选状态,除非确认编辑部不需要该文件,否则可能影响审稿流程。勾选表示不附带此PDF,不勾选则会正常生成并提交该评审文件。

ZhangJiqun&191cm&85kg 2182

pdb文件删除杂原子 HETATM;保留或去除水分子

这样操作水分子也会跟着删除,如果需要保留水分子。

weixin_42357472的博客 2644

IOS学习笔记-Protocol(协议-委托)

在IOS开发中协议和委托是两个密不可分的概念(也可以说是不同的设计模式,只不过在这里我们把他们讲在一起,因为我们常常都是这么用的) 确切来说,协议[protocol]定义了一种规范,使遵循它的类具备一种能力。委托[delegate]则是制定了一种"一个类中需要做的事情交给另一个类来完成"的途径,通过委托别的类,来调用协议里的方法, 委托也可以说是Object-C中实现多继承的一种方式。 一、

高级项目经理、专注于技术架构、分享项目管理及职场心得 619

DO-178C详解:机载软件开发、验证与适航标准指南

DO-178C将软件划分为五个等级(A到E),这些等级是基于失效状态对航空器安全的影响而定。

qq_41854911的博客 2848

iOS 委托模式

委托模式" style="padding:0px; margin:0px; list-style:none; display:inline; width:567px; height:261px"> 委托Delegate是协议的一种,通过一种@protocol的方式实现,顾名思义,就是委托他人帮自己去做什么事。也就是当自己做什么事情不方便的时候,就可以建立一个委托,这样就可以委托他人帮自己去实

ylm0302的专栏 880

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

IOS委托机制

一、名词解释 protocol:

notebook034的专栏 501

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

iOS开发之设计模式(三)委托模式(Delegation)

概念:委托模式顾名思义就是是把一个对象把请求委托给另一个对象处理。 作用:其实ios自带的api很多都是使用委托模式的,如果不理解委托模式的话,我们就很难顺手的使用那些api,而自定义协议之后使用委托,可以让我们方便的处理。 其实ios中的委托机制有点类似于回调机制以及监听器机制。 1、使用协议自定义委托方法以及使用 首先,我们需要使用到@protocol定义协议,该协议中

waking、 1018

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IOS开发中委托代理(degegate)的理解和使用示例

IOS开发中委托代理(degegate)的理解和使用示例 委托代理(degegate),顾名思义,把某个对象要做的事情委托给别的对象去做。那么别的对象就是这个对象的代理,代替它来打理要做的事。 反映到程序中,首先要明确一个对象的委托方是哪个对象,委托所做的内容是什么。 委托机制是一种设计模式,在很多语言中都用到的,这只是个通用的思想,网上会有很多关于这方面的介绍。 那么

想了解甘道夫吗添加微信ID号:ganpucha 1242

IOS常用设计模式——委托模式(IOS开发)

委托模式在之前的博客中用到了很多,比如各种复杂的Cocoa Touch框架的UI控件,几乎都用到了委托来响应控件事件或控制其他对象。 委托模式 -问题: 处理一切IOS应用都在UIApplication中完成,但是在设计过程中并不友好,它藕合度高,职责不清,难以维护,需要不断不断的重构,因此需要把看似功能很复杂的类分解或者分派成功能明确的类。 Apple中我们经常用两种类,一个是框

604

HPGrowingTextView完全解析:打造如iOS短信应用般的自适应文本框

HPGrowingTextView是一款功能强大的iOS自适应文本框组件,能够像苹果短信应用那样随着文本内容自动调整大小,当内容达到特定行数时开始滚动。这个轻量级组件为开发者提供了简单而高效的方式来实现动态文本输入界面。 ## 为什么选择HPGrowingTextView? 在iOS应用开发中,实现一个既美观又实用的文本输入框并非易事。普通的UITextView无法自动调整高度,而HPGrow

gitblog_00370的博客 963

IOS之委托模式

委托模式:为其他对象提供一种委托以控制对这个对象的访问

dyw158的专栏 374

iOS UIViewController之间的传值方式之一:委托代理

iOS开发中经常需要在2个控制器之间传递数值,例如:aViewController上有一个label标签,bViewController有一个TextField等待用户输入,并且将用户输入的内容显示到aViewController中的label上,这中情况就是控制器之间的数值传递了,或者说数据通信。 实现的方式有很多种,本人主要实验了四种,一是delegate委托代理模式,二是notificat

gongqiuwei08的专栏 1719

ios开发之UITextField特性

define NUMBERS @”0123456789\n” (这个代表可以输入数字和换行,请注意这个\n,如果不写这个,Done按键将不会触发,如果用在SearchBar中,将会不触发Search事件,因为你自己限制不让输入\n,好惨,我在项目中才发现的。除了UITextField对象的风格选项,你还可以定制化UITextField对象,为他添加许多不同的重写方法,来改变文本字段的显示行为。2、Placeholder :可以在文本框中显示灰色的字,用于提示用户应该在这个文本框输入什么内容。

2501_90366368的博客 806

IOS之学习笔记十五(协议和委托的使用)

1、协议和委托的使用1)、协议可以看下我的这篇博客IOS之学习笔记十四(协议的定义和实现)https://blog.youkuaiyun.com/u011068702/article/details/809637312)、委托可以叫代理,实现协议的类的对象可以叫委托对象或者代理对象3)、关键就是我们在控制器里类(获取数据类)里面的成员变量需要是一个委托对象或者代理对象4)、然后调用控制器里类(获取数据类)里...

码莎拉蒂 2717

iOS 委托模式

委托Delegate是协议的一种,通过一种@protocol的方式实现,顾名思义,就是委托他人帮自己去做什么事。也就是当自己做什么事情不方便的时候,就可以建立一个委托,这样就可以委托他人帮自己去实现什么方法。 简单的总结了一下自己用到的委托的作用有两个,一个是传值,一个是传事件。 1.所谓传值经常用在B类要把自己的一个数据或者对象传给A类,让A类去展示或者处理。(这个作用在两个View视图

小邓笔记 5258

这样来理解委托,代理,协议三者的区别

一、什么是委托        刚接触iOS开发的朋友肯定对委托这个东西感觉到陌生和迷惑,特别是Java转过来的(博主中枪),那么今天我们就简单的谈谈委托这个东西,atany会尽量做到说的浅显易懂的~        首先让我们来看看委托的定义:委托(delegate),就是某个对象指定另一个对象处理某些特定任务的设计模式。通俗来说,就是“某个对象”把要做的事情委托给“另一个对

jijunyuan_11109的专栏 3703
上一篇: iOS开发学习笔记③ - 视图控制器
下一篇: Bluetooth Low Energy for Android --- Google官方说明文档(英文)
死烤鹅
博客等级 码龄12年 1粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值