我试图隐藏触摸其他地方在屏幕上后键盘。 我正在使用的代码是基于这个答案在这里。
IBOutlet UITextView *myTextView;
和方法:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
if ([myTextView isFirstResponder] && [touch view] != myTextView) {
[myTextView resignFirstResponder];
}
[super touchesBegan:touches withEvent:event];
}
我不明白的是我应该怎么我的UITextField链接到touchesBegan
方法。 其中发送的事件,我需要使用? 此外,不应该的方法是IBAction为,因为现在我无法将的UITextField连接到它。
我也给这个代码尝试,但一个是打破我的导航按钮(甚至在评论中提到的解决方案)
目标C:
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[[self view] endEditing:YES];
}
迅速:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
这是我发现的最好方式,这是非常简单的。
我应该怎么我的UITextField链接到的touchesBegan方法。 其中发送的事件,我需要使用? 此外,不应该的方法是IBAction为,因为现在我无法将的UITextField连接到它。
因为你不知道。 你必须覆盖其上的文本字段是一个子视图视图此方法。
我做什么,是改变整体的UIView类UIControl。
这给你一个触地事件中,你可以连接起来,以resignFirstResponder的方法。
该UIControl还为您提供了一个UIView的所有功能。
-(IBAction)backgroundTap:(id)sender
{
[text1 resignFirstResponder];
[text2 resignFirstResponder];
[textLogin resignFirstResponder];
[textPassword resignFirstResponder];
} // Resign all responders
- (void)viewDidLoad
{
//for keybord hide when touch outside:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(hidekeybord)];
[self.view addGestureRecognizer:tap];
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
-(void)hidekeybord
{
[_yourtextfield.txt resignFirstResponder];
}
In .h
@property (nonatomic, assign) id currentResponder;
In .h
//in viewDidLoad:
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resignOnTap:)];
[singleTap setNumberOfTapsRequired:1];
[singleTap setNumberOfTouchesRequired:1];
[self.view addGestureRecognizer:singleTap];
//Implement the below delegate method:
- (void)textFieldDidBeginEditing:(UITextField *)textField {
self.currentResponder = textField;
}
//Implement resignOnTap:
- (void)resignOnTap:(id)iSender {
[self.currentResponder resignFirstResponder];
}
尝试快速和肮脏的方式:
以一个按钮,并将其链接到一个动作方法(让我们称之为IT背景)。 伸展按钮,使其覆盖整个视图。 调整的视图,以便只有用户通过触摸交互的事情是在按钮的顶部层。 更改按键的自定义类型,这使按钮不可见。 驳回该方法背景firstResponder。