美文网首页
UITextField的文本变化

UITextField的文本变化

作者: ChaosHeart | 来源:发表于2021-08-03 11:12 被阅读0次

一:addTarget

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextField *nameView;
@property (weak, nonatomic) IBOutlet UITextField *pwdView;
@property (weak, nonatomic) IBOutlet UIButton *loginBtn;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    [self.nameView addTarget:self action:@selector(textValueChanged) forControlEvents:UIControlEventEditingChanged];
    [self.pwdView addTarget:self action:@selector(textValueChanged) forControlEvents:UIControlEventEditingChanged];
}

- (void)textValueChanged
{
    self.loginBtn.enabled = (self.nameView.text.length != 0 && self.pwdView.text.length != 0);
}

@end

二:通知

- (void)viewDidLoad {
    [super viewDidLoad];
    //创建通知
    NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
    //注册通知
    [center addObserver:self selector:@selector(textValueChanged:) name:UITextFieldTextDidChangeNotification object:self.nameView];
    [center addObserver:self selector:@selector(textValueChanged:) name:UITextFieldTextDidChangeNotification object:self.pwdView];

}
//监听文本框的值的改变
- (void)textValueChanged:(NSNotification *)notice
{
     self.loginBtn.enabled = (self.nameView.text.length != 0 && self.pwdView.text.length != 0);
}
//移除通知
- (void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

三:KVO

- (void)viewDidLoad {
    [super viewDidLoad];
    //KVO

    [self.nameView addObserver:self forKeyPath:@"text" options:NSKeyValueObservingOptionNew context:nil];
    [self.pwdView addObserver:self forKeyPath:@"text" options:NSKeyValueObservingOptionNew context:nil];

}
/**
 *  kvo回调
 *
 */
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context
{
    self.loginBtn.enabled = (self.pwdView.text.length != 0 && self.nameView.text.length != 0);
}

//移除KVO
- (void)dealloc
{
    [self.nameView removeObserver:self forKeyPath:@"text"];
    [self.pwdView removeObserver:self forKeyPath:@"text"];
}

四:EditingChanged

这个在连线的时候,选择的是EditingChanged 这个方法

/**
 *  监听登录文本框的输入
 */
- (IBAction)nameViewChange
{
    self.loginBtn.enabled = (self.nameView.text.length != 0 && self.pwdView.text.length != 0);
}
/**
 *  登录密码输入框的输入
 */
- (IBAction)pwdViewChange
{
    self.loginBtn.enabled = (self.nameView.text.length != 0 && self.pwdView.text.length != 0);
}

相关文章

网友评论

      本文标题:UITextField的文本变化

      本文链接:https://www.haomeiwen.com/subject/vqlcpltx.html