IOS初级:delegate的使用
delegate的应用场景:view中的事件,controller做处理(如刷新view中元素等)。
storyboard的textfield实现点击return实现收起键盘。
首先在ViewController.h文件中声明, 这个控制器类想要要实现在UITextField类中声明的UITextFieldDelegate某协议(可以是一个,也可以是多个协议)
@interface ViewController : UIViewController <UITextFieldDelegate>
然后在ViewController.m文件中实现一个协议textFieldShouldReturn
- (BOOL) textFieldShouldReturn:(UITextField *)theTextField {
if (theTextField == self.textField) {
[theTextField resignFirstResponder];//辞去 第一响应者
}
return YES;
}
当点击键盘上的return时,系统就会调用这个代理方法。
也就是说调用textFieldShouldReturn不是在ViewController文件中,而是UITextField文件中。
ViewController只是在这里按自己的要求实现了这个方法。用不用还是根据是UITextField实际需求。
这里附上UITextField.h里的delegete声明片段
@property(nonatomic,assign) id<UITextFieldDelegate> delegate; // default is nil. weak reference
@protocol UITextFieldDelegate <NSObject> @optional
- (BOOL)textFieldShouldReturn:(UITextField *)textField; // called when 'return' key pressed. return NO to ignore. @end
UITextField.m文件中处理键盘return事件的时候应该有这么一段(老衲没找到源码)
[self.delegate textFieldShouldReturn];
IOS初级:delegate的使用的更多相关文章
- 转iOS中delegate、protocol的关系
iOS中delegate.protocol的关系 分类: iOS Development2014-02-12 10:47 277人阅读 评论(0) 收藏 举报 delegateiosprocotolc ...
- ios学习-delegate、传值、跳转页面
ios学习-delegate.传值.跳转页面 1.打开xcode,然后选择ios--Application--Empty Application一个空项目. 项目目录: 2.输入项目名称以及选 ...
- Unity3D for iOS初级教程:Part 3/3
转自Unity 3D for iOS 这篇文章还可以在这里找到 英语 Learn how to use Unity to make a simple 3D iOS game! 这份教程是由教程团队成员 ...
- Unity3D for iOS初级教程:Part 3/3(上)
转自:http://www.cnblogs.com/alongu3d/archive/2013/06/01/3111738.html 欢迎来到第三部分,这是Unity 3D for iOS初级系列教程 ...
- iOS上Delegate的悬垂指针问题
文章有点长,写的过程很有收获,但读的过程不一定有收获,慎入 [摘要] 悬垂指针(dangling pointer)引起的crash问题,是我们在iOS开发过程当中经常会遇到的.其中由delegat ...
- iOS多播Delegate类——GCDMulticastDelegate用法小结
iOS中通常的delegate模式只能有一个被委托的对象,这样当需要有多个被委托的对象时,实现起来就略为麻烦,在开源库XMPPFramework中提供了一个GCDMulticastDelegate类, ...
- 对iOS中Delegate的理解
首先 协议protocol 和委托delegate 是两个完全不同的概念 放在一起说 是因为我们总是在同一个头文件里看到它们: 首先解释一下什么是委托 :举个例子 ,我工作的时候给你打电话,让你帮我 ...
- iOS开发——delegate的相关警告
警告:Assigning to 'id<...Delegate>' from incompatible type '...ViewController *const_strong' 解决方 ...
- IOS初级:AFNetworking
狗 日的,第三方框架真j8难搞 1.为什么NS_ASSUME_NONNULL_BEGIN在6.2报错,你他么的还挑IDE,你这是什么态度? 2.还有,你他么的自动给老子转json了,有问过我么? #i ...
随机推荐
- asp.net之发送邮件1
/// <summary> ///发邮件给用户 /// </summary> /// <param name="userEmail">用户的邮件 ...
- SQL%ROWCOUNT作用
SQL%ROWCOUNT是一个游标属性,而SQL中的DML操作实际上是一种隐式的游标操作,在做insert,update,delete,merge以及select into操作时,Oracle会打开一 ...
- eclipse环境的搭建(转载)
原文地址:http://hanqunfeng.iteye.com/blog/982182 此文章发表于2011年到2012年 使用eclipse真的有年头了,相信java程序员没有不知道它的,最近在给 ...
- style标签下的CSS代码的显示与实时编辑
style标签也是标签 首先设置body style的样式 body style{ display:block; padding:0.6em 0.8em; border:1px dashed #ccc ...
- as3.0影片简介失效,不阻碍下面影片简介的事件
mast.mouseEnabled=false; mast.mouseChildren=false;
- unity填色绘画游戏Drawing Coloring Extra Edition
. 下载地址: https://item.taobao.com/item.htm?spm=0.7095261.0.0.2e611debLdF3mf&id=576153069662
- 《基于Nginx的中间件架构》学习笔记---1.环境配置
一.环境调试确认 (四项确认) 1.确认系统网络 ping www.baidu.com 2.确认yum可用 yum list|grep gcc 3.确认关闭iptables规则 iptables -L ...
- 关于gcc、make和CMake的区别
CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多.CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要 ...
- mac上为nodejs设置环境变量
Mac下面的环境变量设置和Linux差不多,一般为这几个文件(左边的先加载): /etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.pro ...
- SQL Server 触发器 表的特定字段(一个字段)更新时,触发Update触发器
CREATE TRIGGER [dbo].[Trg_Update_table1_column1] on table1 after update as if update (column1) ...