隐藏键盘触摸滚动视图

Joe*_*aad 6 keyboard background hide uiscrollview ios

我开发了我的应用程序,之后,我发现我需要添加一个Scroll视图并在其中嵌入所有元素.在这样做之后,我注意到键盘外面的键盘没有消失.我知道因为IBAction绑定到ViewController而不是滚动器.滚动条不能有任何IBAction.有没有办法可以帮忙解决这个问题?在添加Scroll视图后,我已经搜索了很多并且丢失了隐藏键盘的信息.这一点不应该那么复杂.

谢谢!

Pei*_*Pei 20

iOS 7中最干净的方式:

scrollView.keyboardDismissMode = UIScrollViewKeyboardDismissModeInteractive;
Run Code Online (Sandbox Code Playgroud)

Swift版本:

scrollView.keyboardDismissMode = .interactive
Run Code Online (Sandbox Code Playgroud)


pia*_*iam 6

请试试这个:

UITapGestureRecognizer *yourTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(scrollTap:)];
    [scrollView addGestureRecognizer:yourTap];
    [self.view addSubview:scrollView];
Run Code Online (Sandbox Code Playgroud)

然后进去

- (void)scrollTap:(UIGestureRecognizer*)gestureRecognizer {

    //make keyboard disappear , you can use resignFirstResponder too, it depends.
    [self.view endEditing:YES];
}
Run Code Online (Sandbox Code Playgroud)

*非凡你说你必须将所有元素嵌入到scrollview中吗?这意味着你已经添加了类似uibutton的东西作为scrollview的子视图然后当你初始uibutton时你也应该添加动作,所以在scrollTap中只是[self.view endEditting如果你在uiscrollview中的某个点按下并且如果那个点是uibutton,它会激活uibutton的动作,因为它会停留在最上层,你将它添加为子视图,如果那个点不是按钮,所以scrollTap将激活.对不起,我没仔细看,但应该像我说的那样.


Guo*_*uan 0

我认为你可以UITapGestureRecognizer为baseViewControlls视图注册一个,然后处理手势

- (void)handleTap:(UITapGestureRecognizer *)recognizer
{
    if(yourScrollView.yourTextField.isFirstResponder)
    {
        [yourScrollView.yourTextField resignFirstResponder];
    }
}
Run Code Online (Sandbox Code Playgroud)

或者当您的键盘显示时,您可以在键盘和 yourView 之间的 baseView 上添加一个透明的遮罩按钮,并在接收发件人时添加该按钮,如下所示:

- (void)maskButton:(id)sender
{
    [_maskButton removeFromSuperView];
    if(yourScrollView.yourTextField.isFirstResponder)
    {
        [yourScrollView.yourTextField resignFirstResponder];
    }
}
Run Code Online (Sandbox Code Playgroud)