我有一个带有UITextField
的自定义单元格。我应该在自定义单元格类或视图的类中设置delegate
?
我试图在两者中做到这一点,但没有结果。我从故事板中设置了委托。
这是我做的:
-(void)textViewShouldReturn:(UITextField *)textField
{
if ([textField.text isEqualToString:@""]){
return;
}
UIAlertView *helloEarthInputAlert = [[UIAlertView alloc]
initWithTitle:@"Name!" message:[NSString stringWithFormat:@"Message: %@", textField.text]
delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[helloEarthInputAlert show];
}
但如果我把这个单元格放在这一部分.noteTextField.delegate = self:
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
self.tableView.frame=CGRectMake(self.tableView.frame.origin.x, self.tableView.frame.origin.y-30, self.tableView.frame.size.width, self.tableView.frame.size.height);
return YES;
}
答案 0 :(得分:1)
在自定义单元格的类中添加委托。但不要忘记实施协议
// MyCell.h
@interface MyCell : UITableViewCell <UITextFieldDelegate>
// ...
// MyCell.m
-(void)autoconfigureCell // a method I added to configure cell, but also can do in "-(void)layoutSubviews"
{
// ...
myTextField.delegate = self;
// ...
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField // <-- BOOL
{
// do stuff
return YES;
}
答案 1 :(得分:0)
您应该在ViewController中设置委托,它必须实现UITextFieldDelegate
并知道调用委托方法的文本字段,您可以这样做:
-(void)textViewShouldReturn:(UITextField *)textField
{
CGPoint textFieldPosition = [textField convertPoint:CGPointZero toView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:textFieldPosition];
...
}