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

最新文章

  1. StartUML的基础的使用,用例图,序列图
  2. console 输出信息
  3. CentOS_7.2安装Redis_3.0
  4. js基础篇——call/apply、arguments、undefined/null
  5. mybatis3批量更新 批量插入
  6. A session had already been started - ignoring session_start() 解决方法
  7. eclipse集成maven3后,创建java项目详细图解
  8. MD5加密(16/32)
  9. ID和Name的区别
  10. oracle查锁表SQL
  11. 修改PHP上传大小设置
  12. css 导航条 布局
  13. PAT (Basic Level) 1013. 数素数 (20)
  14. Linux的VI/VIM
  15. PHP正则表达式完全手册
  16. php面试题中的约瑟夫环
  17. 【转】Git代码行统计命令集
  18. Android ROM开发(一)——Windows下Cygwin和Android_Kitchen厨房的安装
  19. ARVE: Augmented Reality Applications in Vehicle to Edge Networks
  20. gitbook 入门教程之实用插件(新增3个插件)

热门文章

  1. Global Average Pooling Layers for Object Localization
  2. android:项目迁移error:Please change caller according to com.intellij.....
  3. selenium&amp;phantom实战--获取代理数据
  4. A B C D类网络地址
  5. Asp.net单点登录解决方案
  6. iOS设计模式 - 组合
  7. swift版的StringAttribute
  8. Redis学习---Redis操作之Hash
  9. PHP 实现单点登录
  10. java中判断对象中属性值是否为空的函数