使用UIToolbar / UITextField重新响应第一响应者问题

时间:2014-05-31 12:34:43

标签: ios objective-c viewcontroller resignfirstresponder

好吧 - 我正在UIToolbar上为UIKeyboardTypeDecimalPad实施一个- (void) viewDidLoad { UIToolbar *toolbar = [[UIToolbar alloc] init]; UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(donePicker:)]; UIBarButtonItem *spaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; [toolbar setItems:@[doneButton, spaceItem]]; self.textField.inputAccessoryView = toolbar; } -(void)donePicker:(id)sender { [self.textField resignFirstResponder]; } 文字字段。

问题是,不会调用将文本字段上的响应者重新签名的方法。我已经放入NSLogs来查看被调用的内容和未调用的内容,并调用设置(即UIToolbar初始化,添加按钮,将工具栏添加到文本字段等),但是方法从未被调用过按下“完成”按钮时。事实上,该按钮甚至看起来都不是“可点击的”。

[self.textField resignFirstResponder]

我试图同时使用[self.view endEditing:YES]和{{1}},两者都没有结果。任何想法,伙计们?

1 个答案:

答案 0 :(得分:0)

您只需要:

[yourtextfield setReturnKeyType:UIReturnKeyDone];
yourtextfield.delegate = self;

现在这个方法可以完成你的工作:

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

享受:)