简体   繁体   English

如何为滚动视图的子视图禁用点按手势?

[英]How to Disable Tap Gesture for Scroll view's sub view?

I have created one scrollview for registration. 我创建了一个滚动视图进行注册。 I have also use tableview for drop-down(Male/Female) and tap Gesture on scrollview for hide all input views because touchesBegan method dose not call. 我还使用tableview下拉菜单(男性/女性),并在scrollview上点击Gesture以隐藏所有输入视图,因为touchesBegan方法未调用。 whenever i click on table view cell,it will not call didselect method but consider as tap on scrollview. 每当我单击表格视图单元格时,它都不会调用didselect方法,而是将其视为滚动视图上的点击。

在此处输入图片说明

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
tap.numberOfTapsRequired=1;
[_scrollview_out addGestureRecognizer:tap];

Method:- 方法:-

-(void)dismissKeyboard
{
    [_txt_name resignFirstResponder];
    [_txt_mname resignFirstResponder];
    [_txt_surname resignFirstResponder];
    [_txt_gender resignFirstResponder];
    [_txt_dob resignFirstResponder];
    _tbl_view_gender.hidden=true;
    _txt_dob.hidden=false;
    _lbl_dob.hidden=false;

}

Table View didSelect Method:- 表格视图didSelect方法:-

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [_scrollview_out endEditing:YES];

    str2=[gender_arr objectAtIndex:indexPath.row];
    _txt_gender.text=str2;


    _tbl_view_gender.hidden=true;
    _txt_dob.hidden=false;
    _lbl_dob.hidden=false;
}

for me there are two options: 对我来说,有两种选择:

1: add the tableview in scrollView 's superView 1:在scrollViewsuperView添加tableview

2: subclass UIScrollView , overwrite method: 2:子类UIScrollView ,覆盖方法:

 -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{
       //if the touch point in the tableview.
       //return NO;
       //else
       //return YES;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    if ([touch.view isDescendantOfView:Your Tableview]]) {

        // Don't let selections of auto-complete entries fire the
        // gesture recognizer
        return NO;
    }

    return YES;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM