在Textfield - Custom TableCell上关闭键盘

时间:2017-07-05 03:14:28

标签: ios objective-c uitableview

我有一个自定义单元格,在自定义单元格中,我有一个文本字段,用户可以在其中更改值。无论我尝试了什么,当用户输入一些值时,我都无法解除键盘。它没有达到下面显示的任何委托方法。

CheckOutTableViewCell.m

#import "CheckOutTableViewCell.h"

@implementation CheckOutTableViewCell
@synthesize productName;
@synthesize productPrice;
@synthesize productOrderNumberTF;

- (void)awakeFromNib {
    [super awakeFromNib];
    // Initialization code
}

-(id) init;
{
    self = [super init];
    if (!self) return nil;
    productOrderNumberTF.delegate = (id)self;
    return self;
}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    // enter closes the keyboard
    if ([string isEqualToString:@"\n"])
    {
        [textField resignFirstResponder];
        return NO;
    }
    return YES;
}

- (void) textFieldDidEndEditing:(UITextField *)textField {
    NSLog(@"%@", textField.text);
}

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}

// dismiss keyboard when user clicks on anywhere on the UI
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.productOrderNumberTF resignFirstResponder];
}

CheckOutTableViewController.m

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        static NSString *cellIdentifier = @"cell";
        CheckOutTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
        if (cell == nil)
        {
            cell = [[CheckOutTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
            cell.productOrderNumberTF.delegate = (id)self;
        }
   return cell
}

ViewController的屏幕截图

enter image description here

1 个答案:

答案 0 :(得分:0)

由于未分配delegate值,您的textfield delegate方法未进行调用。

delegate

中分配awakeFromNib
- (void)awakeFromNib {
    [super awakeFromNib];
    productOrderNumberTF.delegate = self;
}
  

nib-loading基础结构向从nib存档重新创建的每个对象发送awakeFromNib消息,但仅在存档中的所有对象都已加载并初始化之后。当一个对象收到一个awakeFromNib消息时,它保证已经建立了所有的插座和动作连接。