使用 UIToolbar/UITextField 辞职第一响应者问题
Posted
技术标签:
【中文标题】使用 UIToolbar/UITextField 辞职第一响应者问题【英文标题】:Resign first responder issues with UIToolbar/UITextField 【发布时间】:2014-05-31 12:34:43 【问题描述】:好的 - 我正在实现一个 UIToolbar
,其中包含一个完成按钮到 UIKeyboardTypeDecimalPad
的文本字段。
问题是,没有调用将在文本字段上退出响应者的方法。我已经放入 NSLogs 以查看调用了什么和没有调用什么,并调用了设置(即 UIToolbar 初始化、添加按钮、将工具栏添加到文本字段等),但从未调用过该方法当按下“完成”按钮时。事实上,这个按钮甚至看起来都不是“可点击的”。
- (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];
我尝试使用[self.textField resignFirstResponder]
和[self.view endEditing:YES]
,两者都没有结果。有什么想法吗,伙计们?
【问题讨论】:
toolbar
被添加到视图的哪个位置?
设置文本字段的委托。
好的,为了清楚起见,这里的问题是 donePicker:
方法没有被调用,对吧?我们可以消除关于键盘的整个讨论,因为实际的问题是您尝试绑定到条形按钮的方法没有被调用,对吗?
@nhgrif 这就是问题所在,正确。
【参考方案1】:
这里你只需要做的是:
[yourtextfield setReturnKeyType:UIReturnKeyDone];
yourtextfield.delegate = self;
现在这个方法可以完成你的工作:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
[textField resignFirstResponder];
return YES;
享受:)
【讨论】:
我使用的是DecimalPad
键盘类型。没有可用的返回按钮。这就是为什么我要通过UIToolbar
路线。
我试了一下;如果我使用回车键,它会在模拟时关闭键盘 - 但由于没有返回按钮,它不会在手机上关闭。以上是关于使用 UIToolbar/UITextField 辞职第一响应者问题的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)