簡體   English   中英

填充所有 UITextField 后,UIButton 未啟用

[英]UIButton is not enabling when all UITextFields are filled in

我正在開發一個 iOS 應用程序,其中只有在填充了所有UITextField之后才啟用按鈕(即每個里面至少有一個字符)。 每個UITextField都位於UITableViewCell內的自定義UITableView 一旦用戶在每個UITextField輸入了一個值,我就需要啟用該按鈕。 在我的viewDidLoad方法中,我禁用按鈕如下:

[_doneButton setEnabled:NO];

然后我有以下方法:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    for (int i = 0; i < [self.table numberOfSections]; i++) {

        NSInteger rows =  [self.table numberOfRowsInSection:i];

        for (int row = 0; row < rows; row++) {

            NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:i];
            SimpleTableCell *cell = (SimpleTableCell *)[self.table cellForRowAtIndexPath:indexPath];

            for (UIView *subView in cell.subviews) {

                if ([subView isKindOfClass:[UITextField class]]) {
                    //Does not come to this point
                    UITextField *txtField = (UITextField *)subView;

                    if([[txtField text] length] > 0) {

                        //Enable button and bold title
                        [_doneButton setEnabled:YES];
                        [_doneButton.titleLabel setFont:[UIFont boldSystemFontOfSize:28]];

                    }

                     else {

                         [_doneButton setEnabled:NO];

                     }

                }

            }

        }

    }

    return YES;
}

不幸的是,我的代碼沒有進入“if”子句,在那里我檢查自定義單元格是否具有UITextField類型的子UITextField ,因此,該按鈕從未啟用。 作為記錄,“SimpleTableCell”是我創建的自定義UITableViewCell類的名稱。 我的代碼似乎是正確的,但我不知道為什么它不能正常運行。 誰能看到我做錯了什么?

這是因為單元格的唯一邏輯子視圖是包含單元格所有項目的 UIView。 它的屬性是“contentView”。

UITableViewCell 對象的內容視圖是單元格顯示內容的默認超級視圖。 如果您想通過簡單地添加其他視圖來自定義單元格,您應該將它們添加到內容視圖中,以便在單元格進入和退出編輯模式時將它們適當地定位。

關於它的更多信息: https : //developer.apple.com/library/ios/documentation/uikit/reference/UITableViewCell_Class/Reference/Reference.html#//apple_ref/occ/instp/UITableViewCell/contentView

我想我會以完全不同的方式來解決這個問題。 我會創建一個可變字典來保存各種文本字段中的字符串。 給文本字段標簽,並使用標簽(轉換為 NSNumbers)作為字典中的鍵。 實現 textFieldDidEndEditing:,並在該方法中獲取字符串,檢查它是否不是空字符串,如果不是,則在字典上執行 setObject:forKey: 。 設置值后,檢查字典的 allKeys 屬性的計數,如果它等於您擁有的文本字段數,則啟用該按鈕。

您是否設置了 UITextField 的委托? 如果根本沒有調用該方法,那就是問題所在。

暫無
暫無

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

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