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;
            }
        }
        
    }
  • 相关阅读:
    一张图片入门Python
    4.1. 如何在Windows环境下开发Python
    你必须知道的EF知识和经验
    XUnit的使用
    如何使用NUnit
    Entity Framework 不支持DefaultValue
    Have You Ever Wondered About the Difference Between NOT NULL and DEFAULT?
    Validation failed for one or more entities. See 'EntityValidationErrors' property for more details
    Entity Framework 与多线程
    sqlite中的自增主键
  • 原文地址:https://www.cnblogs.com/sheer-code/p/10109137.html
Copyright © 2011-2022 走看看