注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

熊猫正正的博客

熊猫正正的天空

 
 
 

日志

 
 

Storyboard中的First Responder深入理解  

2013-04-27 00:50:43|  分类: ios开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
转自:http://www.devdiv.com/storyboard_first_responder_-blog-1-50012.html

本文由DevDiv Vincent(Vincent@devdiv.com)原创,转载请注明出处。
欢迎关注我的微博,接收最新Android/iOS/WP/Win8研发及行业动态:

引入:
相信很多开发者看到storyboard中的这个first responder都会有这样的疑问:这个东东是做什么的?

Storyboard中的First Responder深入理解 - 熊猫正正 - 熊猫正正的博客


原理讲解:

本文着重给大家讲讲什么是First Responder,我们将通过一个例子讲解它的使用,具体如下:

1. 创建Single View Application工程,命名为:FirstResponderTest

2. 在Storyboard中添加两个Text Field,两个Button

Storyboard中的First Responder深入理解 - 熊猫正正 - 熊猫正正的博客

3. 为Paste按钮设置Touch Down event,指向First Responder

Storyboard中的First Responder深入理解 - 熊猫正正 - 熊猫正正的博客

在弹出菜单中选择Paste

Storyboard中的First Responder深入理解 - 熊猫正正 - 熊猫正正的博客

我们希望在我们点击Paste button时候执行First Responder的paste: action。

4. 接下来在ViewController.h中添加两个Text Field outlet,具体如下:

Storyboard中的First Responder深入理解 - 熊猫正正 - 熊猫正正的博客

然后按照下图填写

Storyboard中的First Responder深入理解 - 熊猫正正 - 熊猫正正的博客

5. 在ViewController.m中添加以下代码:

[代码]c#/cpp/oc代码:

1@synthesize textField1;
2@synthesize textField2;
6. 在ViewController.m的viewDidLoad中添加:

[代码]c#/cpp/oc代码:

01NSString *copyString = @"Hello DevDiv!";
02 
03UIPasteboard *pb = [UIPasteboard generalPasteboard];
04 
05[pb setString:copyString];
06 
07 
08 
09//  Set first responder
10 
11[textField1 becomeFirstResponder];
7. 执行起来跑一跑,点一下Paste按钮,你会发现字符串Hello DevDiv!从Pasteboard中直接复制到textField1中去了

Storyboard中的First Responder深入理解 - 熊猫正正 - 熊猫正正的博客

这是因为:

1). Paste button的touch down event调用First Responder的paste: action,

2). 而此时textField1是First Responder,

3). 所以Paste button实际上调用的是textField1的paste: action。

8. 接下来我们为Switch FR button添加touch down event处理,具体代码如下:

[代码]c#/cpp/oc代码:

1- (IBAction)switchFR:(id)sender {
2    if ([textField1 isFirstResponder]){
3        [textField2 becomeFirstResponder];
4    }
5    else{
6        [textField1 becomeFirstResponder];

代码并不复杂,让两个Text Field轮流担任First Responder。

9. 我们再执行程序,切换First Responder

如果这是点击Paste按钮,那么你会发现,字符串被Copy到不同的Text Field。

Storyboard中的First Responder深入理解 - 熊猫正正 - 熊猫正正的博客


总结如下:

1. Storyboard中的First Responder只是一个placeholder,它不是具体指向哪个responder,

2. 如果程序不在乎谁是First Responder,都让First Responder执行某个action(比如这里的paste:),那么我们就可以把event发给First Responder。


代码下载:

  评论这张
 
阅读(69)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017