今天做项目的时候,有个需求,点击按钮,就在特定的编辑框输入按钮中的文字,一开始我还以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. iframe的探讨

    用法 1.iframe是用来在网页中插入第三方页面,早期的页面使用iframe主要是用于导航栏这种很多页面都相同的部分,这样在切换页面的时候避免重复下载. 优点 1.便于修改,模拟分离,像一些信息管理 ...

  2. cocos2d-x学习笔记--第一天记录

    1.环境安装 http://www.cocos2d-x.org/ ---下载2.2.3--解压 https://www.python.org/ ---2.7.6 系统环境变量 设置安装目录 2创建一个 ...

  3. linux erlang环境安装

    1.安装环境:yum -y install make gcc gcc-c++ kernel-devel m4 glibc-devel autoconfyum -y install ncurses-de ...

  4. leading--Oracle hint

    SQL>  explain plan for select rowid rid from  2   scott.emp e where e.empno >100 and e.empno & ...

  5. git下配置github sshkey

    教程看这里 http://xiaxveliang.blog.163.com/blog/static/29708034201341244759225/

  6. 自己搭建anki服务器

    目录 centos端 电脑客户端 安卓端 centos端 # 安装服务 yum -y install python-setuptools easy_install Ankiserver mkdir - ...

  7. selenium&phantom实战--获取代理数据

    获取快代理网站的数据 注意: #!/usr/bin/env python # _*_ coding: utf-8 _*_ # __author__ ='kong' # 导入模块 from seleni ...

  8. 【Kettle】1、简单介绍

    本人为转载,感谢作者的辛勤劳作:http://blog.csdn.net/rotkang/article/details/20810921 ------------------------------ ...

  9. [WSUS] Windows Server Update Service 更新后,出现错误不能连接

    执行以下命令:C:\Program Files\Update Services\Tools\wsusutil postinstall /servicing 参考:http://www.urtech.c ...

  10. 用标签页TitleSwitch切换不通的控制器

    用标签页TitleSwitch切换不通的控制器 教程效果: 项目开发中效果: 各种源码: TitleSwitch.h 与 TitleSwitch.m (这个是修改过的升级版本) // // Title ...