一个界面,有多个UITextField的时候,点击提交按钮发送数据时,取消键盘
2016-04-21 09:02
603 查看
一个界面,有多个UITextField的时候,点击提交按钮发送数据时,取消键盘
我们都知道,UITextField取消键盘用resignFirstResponder,
当一个界面有多个UITextField时,对每个UITextField变量用resignFirstResponder太麻烦了,
可以用转载的下面这篇文章的方法:
转载自:http://my.oschina.net/hmj/blog/100020
原 发表于10个月前(2013-01-05
10:34) 阅读(439) | 评论(0) 2人收藏此文章, 我要收藏
赞0
IOS endEdting
键盘的显示和关闭》 一篇介绍了键盘的显示与关闭的原理流程性的东西,在关闭如果当前我们正在在textField上输入文本的话,我们只要做如下操作
即可将键盘关闭,但随之问题也就出现了,假如考虑我们现在在应用中包含一了表单模块,要求填完表单之后我们要将数据进行保存,该表单可能包含了十几个UITextField对应的数据 输入项。此外包含了一个“提交”按钮,点击提交数据发送后台的过程中,我们要弹出一个简单的提交等待弹出框告知用户等待。整个流程并不复杂,但是涉及到了一个UI显示细节问题,即: 在用户等待的过程中键盘可能一直处于显示状态,虽然可能被弹出框的遮罩遮住,也许可能有些人不介意,但个人感觉正确正确的显示状态是,在点击提交数据后,紧接着是马上关闭键盘, 然后显示等待弹出框。因此,这涉及到要跟踪当前处于First
Responder状态的UITextField对象,好让我们在提交的action中调用其resignFirstResponder方法关闭键盘,这 是我们可能直观上首先想到的问题的解决办法,的确,这也是最直观的。通常在IOS的MVC设计中,一个模块往往会对应一个UIViewController,假设我们的表单提交对应的Controller名为 FormViewController,我们可以用如下代码来简单解释以上处理流程:
view
source
print?
这里FormViewController首先实现了UITextFieldDelegate协议,在viewDidLoad的时候,让所有textField的delegate都指向FormViewController,并且添加了editingTextField属性用于保存当前处于编辑状态下的textField对象,具体的跟踪方法是在在textFieldDidBeginEditing:代理方法中实现,这样在submitForm时,我们边可以调用
我们都知道,UITextField取消键盘用resignFirstResponder,
当一个界面有多个UITextField时,对每个UITextField变量用resignFirstResponder太麻烦了,
可以用转载的下面这篇文章的方法:
转载自:http://my.oschina.net/hmj/blog/100020
UIView之endEditing方法
原 发表于10个月前(2013-01-0510:34) 阅读(439) | 评论(0) 2人收藏此文章, 我要收藏
赞0
IOS endEdting
问题
在 《IOS键盘的显示和关闭》 一篇介绍了键盘的显示与关闭的原理流程性的东西,在关闭如果当前我们正在在textField上输入文本的话,我们只要做如下操作
1 | [textField resignFirstResponder] |
Responder状态的UITextField对象,好让我们在提交的action中调用其resignFirstResponder方法关闭键盘,这 是我们可能直观上首先想到的问题的解决办法,的确,这也是最直观的。通常在IOS的MVC设计中,一个模块往往会对应一个UIViewController,假设我们的表单提交对应的Controller名为 FormViewController,我们可以用如下代码来简单解释以上处理流程:
view
source
print?
01 | #import "FormViewController.h" |
02 |
03 | @interface FormViewController ()<UITextFieldDelegate> |
04 |
05 | @property (weak, nonatomic) IBOutlet UITextField *textFieldA; |
06 | @property (weak, nonatomic) IBOutlet UITextField *textFieldB; |
07 | @property (weak, nonatomic) IBOutlet UITextField *textFieldC; |
08 | @property (weak, nonatomic) IBOutlet UITextField *textFieldD; |
09 | @property (weak, nonatomic) IBOutlet UITextField *textFieldE; |
10 | @property (weak, nonatomic) IBOutlet UITextField *textFieldF; |
11 | @property (weak, nonatomic) IBOutlet UITextField *textFieldG; |
12 | @property (weak, nonatomic) IBOutlet UITextField *textFieldH; |
13 | @property (weak, nonatomic) IBOutlet UITextField *textFieldI; |
14 |
15 | @property (weak , nonatomic) UITextField *editingTextField ; // 跟踪当前处于编辑状态的textfield |
16 |
17 | @end |
18 | @implementation FormViewController |
19 | @synthesize textFieldA,textFieldB,textFieldC, |
20 | textFieldD,textFieldE,textFieldF,textFieldG,textFieldH, |
21 | textFieldI,editingTextField; |
22 | - ( void )viewDidLoad |
23 | { |
24 | [super viewDidLoad]; |
25 | self.textFieldA.delegate = self ; |
26 | self.textFieldB.delegate = self ; |
27 | self.textFieldC.delegate = self ; |
28 | self.textFieldD.delegate = self ; |
29 | self.textFieldE.delegate = self ; |
30 | self.textFieldF.delegate = self ; |
31 | self.textFieldG.delegate = self ; |
32 | self.textFieldH.delegate = self ; |
33 | self.textFieldI.delegate = self ; |
34 |
35 | } |
36 | - ( void )viewDidUnload { |
37 | [self setTextFieldA:nil]; |
38 | [self setTextFieldB:nil]; |
39 | [self setTextFieldC:nil]; |
40 | [self setTextFieldD:nil]; |
41 | [self setTextFieldE:nil]; |
42 | [self setTextFieldF:nil]; |
43 | [self setTextFieldG:nil]; |
44 | [self setTextFieldH:nil]; |
45 | [self setTextFieldI:nil]; |
46 | [self setEditingTextField:nil]; |
47 | [super viewDidUnload]; |
48 | } |
49 | // UITextFieldDelegate 方法 |
50 | - ( void )textFieldDidBeginEditing:(UITextField *)textField |
51 | { |
52 | self.editingTextField = textField ; |
53 | } |
54 | // 提交Action |
55 | - (IBAction)submitForm:(UIBarButtonItem *)sender |
56 | { |
57 | [self.editingTextField resignFirstResponder]; |
58 | // 提交表单,弹出提示等待框,略 |
59 | } |
1 | [self.editingTextField resignFirstResponder]; |
相关文章推荐
- LeetCode|Implement Stack using Queues
- String,StringBuffer和StringBuilder的区别
- UI- UIWindow & UIView
- 利用UICollectionView实现"新特性"功能demo
- 论项目的UI设计
- LeetCode|Implement Queue using Stacks
- 转载/JSTL/attribute value does not accept any express
- [bzoj4527]K-D-Sequence 解题报告
- UID 修改 & UID 锁死修复
- Android Material Design新UI控件使用大全 一
- iOS 通过UIBezierPath和CAShapeLayer绘制圆形进度条
- 鼠标单击TabSequence=0的单元格时黑色选中色变为其他颜色
- UITableViewStyleGrouped顶部留白问题
- STL中为什么我们更偏爱vector而不是deque
- STL中为什么我们更偏爱vector而不是deque
- A Quick Overview of MSAA
- uva 540 Team Queue
- iOS中storyboard故事板使用Segue跳转界面、传值
- JSP中request与response
- jdbc出现错误Before start of result set Query: select *