设为首页 加入收藏

TOP

iOS UITextField的代理<UITextFieldDelegate>的几点笔记
2019-09-17 15:22:00 】 浏览:86
Tags:iOS UITextField 代理 < UITextFieldDelegate> 笔记

 今天做项目的时候,有个需求,点击按钮,就在特定的编辑框输入按钮中的文字,一开始我还以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-1, 1)];
    //获取编辑框length -1的文字
    _selectTf.text =[_selectTf.text substringToIndex:_selectTf.text.length -1];
    
    for (int i=0; i<12; i++) {
         UIButton *btn= UIButton_array[i];
        //判断删除的文字和按钮中的文字是否相同
        if ([btn.titleLabel.text isEqualToString:gaBackStr]) {
            //相同,按钮从不可点击变为可点击,颜色改变
            btn.userInteractionEnabled =YES;
            btn.backgroundColor =[UIColor orangeColor];
            return;
        }
    }
    
}

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇ios 自动化构建 code-select: err.. 下一篇'Attempt to create two anim..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目