我有一个自定义单元格,在自定义单元格中,我有一个文本字段,用户可以在其中更改值。无论我尝试了什么,当用户输入一些值时,我都无法解除键盘。它没有达到下面显示的任何委托方法。
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的屏幕截图
答案 0 :(得分:0)
由于未分配delegate
值,您的textfield delegate
方法未进行调用。
在delegate
awakeFromNib
值
- (void)awakeFromNib {
[super awakeFromNib];
productOrderNumberTF.delegate = self;
}
nib-loading基础结构向从nib存档重新创建的每个对象发送
awakeFromNib
消息,但仅在存档中的所有对象都已加载并初始化之后。当一个对象收到一个awakeFromNib消息时,它保证已经建立了所有的插座和动作连接。