今天做项目的时候,有个需求,点击按钮,就在特定的编辑框输入按钮中的文字,一开始我还以C++的思想来写,先获取光标的位置,然后在判断是否在那个编辑框,进行输入。后来我旁边的同事看到了直接教我用代理方法,因为接触iOS没多久,也不清楚<UITextFieldDelegate>的用法。非常感谢我同事。

1、代理<UITextFieldDelegate>

@interface idiom_ViewController ()<UITextFieldDelegate>
{
UITextField * _selectTf;
NSArray *UIButton_array;
}
@property (weak, nonatomic) IBOutlet UITextField *first_idiom;
@property (weak, nonatomic) IBOutlet UITextField *second_idiom;
@property (weak, nonatomic) IBOutlet UITextField *third_idiom;
- (void)viewDidLoad {
[super viewDidLoad];
//实现UITextFieldDelegate的协议
_first_idiom.delegate=self;
_second_idiom.delegate =self;
_third_idiom.delegate =self;
//点击编辑框隐藏软键盘
_first_idiom.inputView =[UIView new];
_second_idiom.inputView =[UIView new];
_third_idiom.inputView =[UIView new];
//创建手势识别对象并监听手势
UITapGestureRecognizer * tap =[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAction)];
[self.view addGestureRecognizer:tap];
// Do any additional setup after loading the view from its nib.
}
//失去焦点
-(void)tapAction{
[self.view endEditing:YES];
} -(void)textFieldDidEndEditing:(UITextField *)textField{
_isBeginTf =NO;
} -(void)textFieldDidBeginEditing:(UITextField *)textField
{
_isBeginTf =YES;
_selectTf =textField;
}

2、按钮点击事件-编辑框输入按钮文字

- (void)button_word:(UIButton *)btn
{
if (!_isBeginTf) {
return;
}
_selectTf.text = [NSString stringWithFormat:@"%@%@",_selectTf.text,btn.titleLabel.text];
btn.userInteractionEnabled =NO;
btn.backgroundColor =[UIColor lightGrayColor];
}

3、删除按钮事件

- (IBAction)goBackButtonAction:(id)sender {
if (!_isBeginTf) {
return;
} if ([_selectTf.text isEqualToString:@""]) {
return;
}
//获取编辑框最后一个文字
NSString *gaBackStr =[_selectTf.text substringWithRange:NSMakeRange(_selectTf.text.length-, )];
//获取编辑框length -1的文字
_selectTf.text =[_selectTf.text substringToIndex:_selectTf.text.length -]; for (int i=; i<; i++) {
UIButton *btn= UIButton_array[i];
//判断删除的文字和按钮中的文字是否相同
if ([btn.titleLabel.text isEqualToString:gaBackStr]) {
//相同,按钮从不可点击变为可点击,颜色改变
btn.userInteractionEnabled =YES;
btn.backgroundColor =[UIColor orangeColor];
return;
}
} }

iOS UITextField的代理<UITextFieldDelegate>的几点笔记的更多相关文章

  1. iOS UITextField限制输入字数

    关于iOS的文本框有时需要限制字数,如手机号,在UITextField的代理单纯写一个判断,在字数超过限制时,这时再想删除就删除不掉,可以在代理这样写,就解决 - (BOOL)textField:(U ...

  2. IOS学习3——代理

    本文转载自:你真的了解iOS代理设计模式吗? 在项目中我们经常会用到代理的设计模式,这是iOS中一种消息传递的方式,也可以通过这种方式来传递一些参数.这篇文章会涵盖代理的使用技巧和原理,以及代理的内存 ...

  3. ios UITextField文本框基本使用,以及所有代理方法的作用

    /* UITextField文本输入框 */ UITextField * textField = [[UITextField alloc]initWithFrame:CGRectMake(50, 50 ...

  4. iOS - UITextField

    前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UITextField : UIControl <UITextInput, NSCoding> @ava ...

  5. iOS UITextField 输入字数限制的实现

    首先你的ViewController需要实现 UITextFieldDelegate 代理, 其次,需要字数限制的UITextField实例的代理要设置成 self(ViewController) 然 ...

  6. ios开发之代理&&协议(补充篇)

    一.理解协议与代理 协议: 协议是一个方法签名的列表,在其中可以定义若干个方法.根据配置,遵守该协议的类会去实现这个协议中规定的若干个方法. 代理: 代理是一个概念,很难用一个名词去定义(如我们可以说 ...

  7. iOS UITextfield只允许输入数字和字母,长度限制

    -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementSt ...

  8. iOS 再谈 代理传值,block反向传值

    本贴的例子是:有A和B两个界面,要实现的效果就是先让A跳转到B,然后B中有个颜色的参数,当B跳转到A时,把这个颜色的参数传递给A,在A中利用这个颜色改变自己界面的颜色. 第1步:在发送者(界面B)中, ...

  9. iOS UITextField控件总结

    先声明下面总结不是自己写的. 参考网址:http://blog.csdn.net/tskyfree/article/details/8121915 //初始化textfield并设置位置及大小   U ...

随机推荐

  1. python之定义函数

    1.定义函数和参数检查 通过def语句定义一个函数,自己定义的函数,当参数个数不对时,python解释器可以抛出TypeError,但是当参数类型不对时,无法抛出TypeError,为此可以通过isi ...

  2. ArcGIS10.3+Oracle12C+ArcGIS Server10.3安装布署(之二)

    1.创建PDB 输入 dbca 命令 2.安装完成后,连接PDBSDE的容器数据库 3.环境变量 从Oracle的官方网站下载   instantclient-basic-nt-12.1.0.2.0. ...

  3. Visualizing LSTM Layer with t-sne in Neural Networks

    LSTM 可视化 Visualizing Layer Representations in Neural Networks Visualizing and interpreting represent ...

  4. Google zxing实现二维码扫描完美解决方案

    最近因项目需求,需要在App中集成二维码扫描的功能.网上找了很多资料,最后决定使用Google的zxing来实现.实现的过程遇到了很多的坑,也是因为这些坑在网上没有具体的解决方案,今天就把我的实现过程 ...

  5. JSON学习笔记-2

    JSON的语法 1.JSON 数据的书写格式是:名称/值对. "name" : "我是一个菜鸟" 等价于这条 JavaScript 语句: name = &qu ...

  6. iPhone越狱cydia源大全

    越狱后如何添加cydia源及cydia源大全,希望对大家能有所帮助! 工具/原料 cydia 步骤/方法 越狱后添加cydia源 进入Cydia管理中找到软件源,先添加源. 进入“软件源”之后点击右上 ...

  7. oracle 中的角色

    conn sys as sysdba;create role testrole;grant create session, create table, unlimited tablespace to ...

  8. 让Oracle的 SHOW PARAMETER 命令显示隐藏参数

    转自 http://blog.csdn.net/staricqxyz/article/details/8624549 Find internal of "show parameter&quo ...

  9. 单机安装hive和presto

    问题: 公司最近在搞presto,主要是分析一下presto和hive的查询大数据量的性能对比: 我先把我的对比图拿出来(50条数据左右)针对同一条sql(select * from employee ...

  10. 切片和append操作

    本文转自:http://meia.fun/article/1541470004286 学习切片时,被append这个方法困扰了半天:在main方法中把一个切片作为实参传递给另一个函数,并在这个函数内调 ...