scrollview添加手势 不影响子控件点击事件

给父视图添加手势,但是子视图的点击事件失效了,怎么办?我在写tableView 自定义cel中显示多张图片 可以左右滑动 我在cell里面放了一个collectionView, 点击tableViewCell 跳转到详情页 如果点的是collectionView里的第三张图片,则详情页直接滑到第三张 ,点击其他区域 从第一张开始。

当图片的少的时候 点击collectionView空白区域的时候,tableViewCell的点击代理方法不走,把collectionView的userInteractionEnabled 设置成NO 代理方法走了,但是collectionview 不能滑动了,collectionViewCell的点击代理方法也不走了。下面是解决方法:

给collection添加手势

//初始化手势

UITapGestureRecognizer *tap=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapcollection)];

//设置代理

tap.delegate=self;

[self.imagesColl addGestureRecognizer:tap];

//遵循这个代理方法  还有其他的代理

// 看介绍 它走在 touchesBegan:withEvent:之前

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{

//判断是不是点的collectionView

if ([touch.view isKindOfClass:[UICollectionView class]]) {

//处理手势 走到你的手势方法里 处理你自己的逻辑

return YES;

}

//如果点击的是cell 返回NO 会走collectionView: didSelectItemAtIndexPath:

return  NO;

}

时间: 2024-10-06 23:22:48

scrollview添加手势 不影响子控件点击事件的相关文章

使QScrollArea的背景透明,并且不影响子控件

使QScrollArea的背景透明,乍看很easy,其实却是一个目前百度上百不出来的问题; 最容易想到的,用qss: scrollArea->setStyleSheet("background-color:transparent;"); 但是这样会使scrollArea所包含的所有子控件的背景也变成透明,大大不妥啊... 然后: scrollArea->setStyleSheet("QScrollArea {background-color:transparent

Qt Gui中父控件监听子控件的IO事件

父对象重新定义自己继承自QObject的函数bool eventFilter(QObject* watched, QEvent* event). 子控件安装父对象的eventFilter: 例如, QTableView * itsView = new QTableView; itsView->viewport()->installEventFilter(this); Qt Gui中父控件监听子控件的IO事件

winform自定义控件中其他遮挡控件点击事件

自定义控件在其他窗口调用时,里面的lable阻挡了控件的点击事件 解决方法 自定义控件中lable的 点击事件 private void Lable1_Click(object sender, EventArgs e) { base.OnClick(e);//触发控件点击事件 } 原文地址:https://www.cnblogs.com/shoumufan/p/10276311.html

控件点击事件会穿透给下面的界面--解决办法

问题: 在SlidingDrawer放上一些ImageButton等控件后,发现在ListView上点击时会穿透到下面的界面对象上,而SlidingDrawer上有按键处理的控件则不会. 解决方法: 给控件添加属性:android:clickable="true" 如果抽屉content内嵌了一个布局文件,可以将布局文件中的布局属性中添加此属性. 另: ViewGroup有两个子ViewGroup A和B,当切换到A时,B隐藏,反之当切换到B时隐藏A.当A在显示在前面时,单击A中的控件

在CTreeCtrl控件点击事件中获取点击的项

网上搜了一下,有两种方法: 1.使用GetSelectedItem() HTREEITEM hItem = m_treeCtrl.GetSelectedItem(); CString strText = m_treeCtrl.GetItemText(hItem); MessageBox(strText); 2.使用HitTest() CPoint pt; GetCursorPos(&pt); m_treeCtrl.ScreenToClient(&pt); UINT uFlags; HTRE

Android控件捕获点击事件的范围

View的Tween动画过程中点击事件的位置并不会因为动画位置的改变而改变,是因为在动画过程中layout的位置实际上没有变,因此曾经一度认为View的点击事件(其实不仅仅是点击事件,包括所有的触摸事件)触发的范围是该View在layout的时候指定的left,top,right,bottom.今天才发现不完全是这样的.一切都是因为平时看代码没有仔细一点所造成了对问题理解不全面. 在这里记录一下发现问题到处理问题的过程. 自定义这样一个ViewGroup,layout两个线性布局,左边的Line

android 子控件的onTouch事件与外部ScrollView冲突

OnTouchListener TouchLis = new OnTouchListener() { @SuppressLint("NewApi") @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub if(event.getAction() == MotionEvent.ACTION_UP){ scrollview.requestDisallo

iOS 开发中中 textView 作为子控件点击输入文本,然后退出文本的方式

方式1. 使用当双击输入的时候弹出键盘同时,使用手势和通知监听键盘的方法实现 代码如下: 1. 监听键盘通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addTap) name:UIKeyboardDidShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@

FusionChart图表控件 点击事件(XML和JSON作为数据源时的分别处理方式)

1.JSON作为数据源时: @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>InChart</title> <script src="~/Scripts/jquery-1.8.2.min.js"&g