事件監聽的三種方法

事件監聽的三種方法:
addTarget --用於監聽一些點擊、值改變等事件
代理       -- 監聽一些開始、結束、選中某行等一些改變控制屬性的一些事件
通知:上面都不行考慮使用通知
通知使用注意:只要監聽通知就要移除通知,不然控制器銷燬後,通知發送時就會找不到對象致使程序崩潰
文本框事件的監聽:
textfied代理只能監聽開始編輯結束編輯,可否改變文字,不能監聽改變文字後的狀況,本項目須要
監聽文本框中是否有輸入,代理和addTarget都不適用。
文本框發出的三個通知:
UIKIT_EXTERN NSString *const UITextFieldTextDidBeginEditingNotification;
UIKIT_EXTERN NSString *const UITextFieldTextDidEndEditingNotification;
UIKIT_EXTERN NSString *const UITextFieldTextDidChangeNotification;
 
登陸界面:
1. 登陸按鈕只有文本框都有文字才能點擊
實現思路:文本框一改變就會發送通知名爲UITextFieldTextDidChangeNotification的通知。故使用這個通知監聽兩個文本框內是否有內容。都有內容則控制登錄按鈕的使能狀態
代碼:HGLoginViewController.m
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    /* 設置文本框一些屬性 */
    // 佔位符
    self.countField.placeholder = @"請輸入帳戶";
    // 清空按鈕
    self.countField.clearButtonMode = UITextFieldViewModeWhileEditing;

    self.pwdField.placeholder = @"請輸入密碼";
    // 密文顯示
    self.pwdField.secureTextEntry = YES;
    self.pwdField.clearButtonMode = UITextFieldViewModeWhileEditing;
   
    /* 登錄按鈕禁用 */
    self.loginBtn.enabled = NO;
   
    // 向系統通知中心註冊監聽通知的事件
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldChange) name:@"UITextFieldTextDidChangeNotification" object:self.countField];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldChange) name:@"UITextFieldTextDidChangeNotification" object:self.pwdField];
   
}
相關文章
相關標籤/搜索