簡體   English   中英

禁用 UIButton 依賴於 4 UITextFields

[英]Disabled UIButton dependant on 4 UITextFields

我有 4 個 UITextFields 我用來保持 2 個 UIButtons 禁用,直到所有 4 個字段都輸入了數據。 到目前為止我有以下代碼

- (void)textFieldDidBeginEditing:(UITextField *)textField {


if (([brand.text length] >0) && ([qty.text length] >0) && ([size.text length] >0) && ([price.text length] >0)) {
    [calcOneButton setEnabled:YES];
    [calcTwoButton setEnabled:YES];

}else {

}


}

我對此有很多問題:-

  1. 當從字段中刪除數據時,UIButtons 仍處於啟用狀態
  2. 按鈕沒有正確啟用,在我將數據輸入所有 4 個字段后,我需要重新點擊一個字段以啟用按鈕。
  3. 我正在記錄每個字段的長度,但是當輸入一個字符時,它從 0 而不是 1 開始計數。

任何人都可以幫助解決這些問題嗎?

記錄字段長度的代碼如下:-

#define MAXLENGTH 5
#define MAXQTY 3
#define MAXSIZE 4
#define MAXBRAND 10

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if (textField == brand) {
    int lengtha = [brand.text length] ;
    NSLog(@"lenghta = %d",lengtha);
    if (lengtha >= MAXBRAND && ![string isEqualToString:@""]) {
        brand.text = [brand.text substringToIndex:MAXBRAND];
        return NO;
    }

它對所有 4 個字段都遵循相同的格式,但是當我輸入一個字符時,NSlog 結果為 0,然后第二個字符為 1,依此類推。

只需使用另一個委托方法。

要么使用: textFieldDidEndEditing:就像氪星在評論中告訴你的那樣

或使用textField:shouldChangeCharactersInRange:replacementString:在鍵入時直接啟用/禁用。

textField:(UITextField*)aTextField shouldChangeCharactersInRange:(NSRange) aRange replacementString:(NSString*)aRepString
{
    NSString *newStr = [aTextField.text stringByReplacingCharactersInRange:aRange withString:aRepString];
    if([newStr length]>0 && /*otherStringLength > 0*/)
          //enable
    else
          //disable
    return YES;
 }

但我認為最常見的方法是使用didEndEditing -方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM