今天做项目的时候,有个需求,点击按钮,就在特定的编辑框输入按钮中的文字,一开始我还以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. 浏览器根对象navigator之客户端检测

    Navigator的5个主要属性: appName:Web浏览器的名称 appVersion:浏览器的版本号和其他版本信息 userAgent:浏览器在它的USER-AGENT HTTP标题中发送的字 ...

  2. android开启线程的误区

    发现一些刚学android的人,和我当初一样,对android的线程会存在着一定误区. 在android中,开启新线程时,一些人会用以下方法: new Handler().post(r); 但是这样并 ...

  3. 格式化字符串漏洞利用实战之 njctf-decoder

    前言 格式化字符串漏洞也是一种比较常见的漏洞利用技术.ctf 中也经常出现. 本文以 njctf 线下赛的一道题为例进行实战. 题目链接:https://gitee.com/hac425/blog_d ...

  4. linux客户端打印报表时操作系统的配置

     报表打印是用applet方式操作的,所以客户端要有jre环境.如果客户端是windows系统的话,安装jre环境比较方便:如果客户端是linux系统的话,即使服务器端reportConfig.x ...

  5. node (1)

    一.介绍 Node.js是一个让JavaScript运行在服务器端的开发平台,它让JavaScript的触角伸到了服务器端. 但Node似乎有点不同: ● Node.js不是一种独立的语言,与PHP. ...

  6. Debian 版本历史

    Production Releases Version Code name Release date End of life date 8.0 jessie April 25th 2015   7.0 ...

  7. Windows ->> 解决Windows 10下面无法多用户同时远程桌面

    解决Windows 10下面无法多用户同时远程桌面 https://pc4u.org/how-to-allow-multiple-rdp-sessions-windows-10-without-mod ...

  8. SQLServer中DataLength()和Len()两内置函数的区别

    最近工作中遇到了个问题:在数据库中声明字段类型时char(4),但实际只存储了‘DCE’三个字母,程序中拼装以该字段作为key的Map中,会把‘DCE’+空格作为其Key,这样造成用没加空格的‘DCE ...

  9. webkit、cef、nwjs、electron、 miniblink浏览器内核优缺点

    市面上作为嵌入的组件的可用的浏览器内核,不外乎这几个:webkit.cef.nwjs.electron. 1.cef:优点是由于集成的chromium内核,所以对H5支持的很全,同时因为使用的人也多, ...

  10. C语言占位符

    占位符就是先占住一个固定的位置,等着你再往里面添加内容的符号,广泛用于计算机中各类文档的编辑. 格式占位符(%)是在C/C++语言中格式输入函数,如 scanf.printf 等函数中使用.其意义就是 ...