如何禁用滚动视图子视图的点击手势?
Posted
技术标签:
【中文标题】如何禁用滚动视图子视图的点击手势?【英文标题】:How to Disable Tap Gesture for Scroll view's sub view? 【发布时间】:2016-02-16 09:39:19 【问题描述】:我创建了一个用于注册的滚动视图。我还使用 tableview 进行下拉(男性/女性)并在滚动视图上点击 Gesture 以隐藏所有输入视图,因为 touchesBegan 方法不会调用。每当我点击表格视图单元格时,它不会调用 didselect 方法,而是认为是点击滚动视图。
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
tap.numberOfTapsRequired=1;
[_scrollview_out addGestureRecognizer:tap];
方法:-
-(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;
表格视图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;
【问题讨论】:
我想为部分表格视图禁用点击手势。或任何其他可选解决方案。 @Hemang 你的意思是我必须在表格视图中创建注册页面吗? 【参考方案1】:对我来说有两种选择:
1:在scrollView
的superView
中添加tableview
2:子类UIScrollView
,覆盖方法:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
//if the touch point in the tableview.
//return NO;
//else
//return YES;
【讨论】:
【参考方案2】:- (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;
【讨论】:
这不是我想要的。谢谢分享。 你也可以使用“tapGesture.cancelsTouchesInView = NO” 它不适用于 UITableview 或 UITableviewCell。触摸表格视图(滚动视图的子视图)视为 TapGesture 的触摸。以上是关于如何禁用滚动视图子视图的点击手势?的主要内容,如果未能解决你的问题,请参考以下文章
iOS 如何在滚动视图/webview 上实现点击手势以“敲出”文本字段?