我有一个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
,则可以避免上面的大多数麻烦。