zoukankan      html  css  js  c++  java
  • 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;
            }
        }
        
    }
  • 相关阅读:
    Android ListView嵌套Button,Button事件覆盖item事件解决办法
    android 再按一次退出程序(实现代码)
    Android 带checkbox的listView 实现多选,全选,反选
    Android调用第三方应用
    Android输入法界面管理(打开/关闭/状态获取)
    ViewPager的使用方法和实现过程
    安装pycharm 2018.3 Professional Edition
    layui和jquery冲突:Syntax error, unrecognized expression: +
    解决因为本地代码和远程代码冲突,导致git pull无法拉取远程代码的问题(转载)
    Object.assign()
  • 原文地址:https://www.cnblogs.com/sheer-code/p/10109137.html
Copyright © 2011-2022 走看看