我有一个UITableView包含自定义tableView单元格。此自定义UITableViewCell包含两个UITextField。我为每个textFields分配了一个标签值,我想确定两个UITextFields是否都包含文本。我想这样做,因为用户正在UITextFields中输入值,这样,一旦用户在UITextField A中输入了文本,并在UITextField B中输入了字符,反之亦然(即,用户在UITextField B中输入了文本,并且在UITextField B中输入单个字符),则触发事件或操作。我意识到我需要使用UITextFieldDelegate方法:

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


但是,我的问题是我不确定在使用此方法时如何同时引用两个UITextFields。我在使用此方法时似乎无法弄清楚如何获取对活动的自定义UITableViewCell的引用。有没有人有什么建议?

最佳答案

这就是我要做的:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    UITextField *theOtherTextField = nil;

    // Get a list of sibling views of the textField
    for( UIView *sub in textField.superview.subviews ){
        if( textField!=sub && [sub isKindOfClass:[UITextField class]] ){
            theOtherTextField = (UITextField *)sub;
        }
    }

    // Now you have 'textField' and 'theOtherTextField' ready to use
}


顺便说一句,这是您获得对单元格的引用的方法,但这取决于您在UITableViewCell的视图层次结构中具有多深的文本字段:

UITableViewCell *cell = (UITableViewCell *)textField.superview.superview;


您可能将UITableView设置为UITextFieldDelegate。如果您想更改以使UITableViewCell成为UITextFieldDelegate,则可以避免上面的大多数麻烦。

07-24 14:16