这个问题已经被问过几次了,但我似乎不明白。
我有一个视图控制器,带有两个文本字段,一个分段控件,一个日期选择器和几个标签。
当用户单击背景或分段控件或日期选择器时,我想关闭键盘。
这是我的.h
文件:
@interface MRPatientenViewController : UIViewController
@property (nonatomic, strong) MRPatientenTableViewController *delegate;
- (IBAction)textFieldReturn:(id)sender;
@property (strong, nonatomic) IBOutlet UITextField *nachnameTextField;
@property (strong, nonatomic) IBOutlet UITextField *vornameTextField;
@property (strong, nonatomic) IBOutlet UIDatePicker *geburtsdatumPicker;
@property (strong, nonatomic) IBOutlet UISegmentedControl *genderSegmentedControl;
@end
这是我的
.m
文件:-(IBAction)textFieldReturn:(id)sender{
[sender resignFirstResponder];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
if ([_nachnameTextField isFirstResponder] && [touch view] != _nachnameTextField) {
[_nachnameTextField resignFirstResponder];
}
else if ([_vornameTextField isFirstResponder] && [touch view] != _vornameTextField) {
[_vornameTextField resignFirstResponder];
}
[super touchesBegan:touches withEvent:event];
}
现在,如果触摸了背景或标签,则关闭键盘。
但是,如果触摸
UISegmentedControl
或datepicker
,如何关闭键盘? 最佳答案
您的Touch代码正确无误,但在我的代码中也可以正常工作。当您单击文本字段之外的时间时,Touch事件调用但其内部条件无法正常工作。我删除条件并检查其是否正常。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[nachnameTextField resignFirstResponder];
[super touchesBegan:touches withEvent:event];
}