隐藏键盘触摸文本框之外(Hide keyboard on touch outside of text

2019-07-31 07:09发布

我试图隐藏触摸其他地方在屏幕上后键盘。 我正在使用的代码是基于这个答案在这里。

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连接到它。

我也给这个代码尝试,但一个是打破我的导航按钮(甚至在评论中提到的解决方案)

Answer 1:

目标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)
}

这是我发现的最好方式,这是非常简单的。



Answer 2:

我应该怎么我的UITextField链接到的touchesBegan方法。 其中发送的事件,我需要使用? 此外,不应该的方法是IBAction为,因为现在我无法将的UITextField连接到它。

因为你不知道。 你必须覆盖其上的文本字段是一个子视图视图此方法。



Answer 3:

我做什么,是改变整体的UIView类UIControl。

这给你一个触地事件中,你可以连接起来,以resignFirstResponder的方法。
该UIControl还为您提供了一个UIView的所有功能。

-(IBAction)backgroundTap:(id)sender
{
    [text1 resignFirstResponder];
    [text2 resignFirstResponder];
    [textLogin resignFirstResponder];
    [textPassword resignFirstResponder];
} // Resign all responders


Answer 4:

- (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];

}


Answer 5:

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];
}


Answer 6:

尝试快速和肮脏的方式:

以一个按钮,并将其链接到一个动作方法(让我们称之为IT背景)。 伸展按钮,使其覆盖整个视图。 调整的视图,以便只有用户通过触摸交互的事情是在按钮的顶部层。 更改按键的自定义类型,这使按钮不可见。 驳回该方法背景firstResponder。



文章来源: Hide keyboard on touch outside of textfield