解决UIScrollView,UIImageView等控件不能响应touch事件的问题
关于UIScrollView,UIImageView等控件不能响应touch事件,主要涉及到事件响应者链的问题,如果在UIScrollView,UIImageView等控件添加了子View,这样事件响应将会被UIScrollView,UIImageView等控件终止,而且这些控件的userInteractionEnabled属性默认的是NO,所以想要解决使用触摸事件,我通过两种方法进行解决。
方法一:
创建UIScrollView,UIImageView等控件的类别文件,将touch的四个方法进行父类方法重写:(创建Objective-C File文件,然后修改类型,创建对应的类别文件)
#import "UIScrollView+TouchEvent.h"
@implementation UIScrollView (TouchEvent)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[[self nextResponder] touchesBegan:touches withEvent:event];
[super touchesBegan:touches withEvent:event];
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
[[self nextResponder] touchesMoved:touches withEvent:event];
[super touchesMoved:touches withEvent:event];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[[self nextResponder] touchesEnded:touches withEvent:event];
[super touchesEnded:touches withEvent:event];
}
-(void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[[self nextResponder] touchesEnded:touches withEvent:event];
[super touchesEnded:touches withEvent:event];
}
@end
方法二:通过给UIScrollView,UIImageView等控件添加手势,执行对应的方法
如:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
bgScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 200, 400)];
bgScrollView.backgroundColor = [UIColor lightGrayColor];
//添加手势
UITapGestureRecognizer *tapGestureR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(updateImageVAction:)];
[bgScrollView setUserInteractionEnabled:YES];
[bgScrollView addGestureRecognizer:tapGestureR];
[self.view addSubview:bgScrollView];
textFie = [[UITextField alloc] initWithFrame:CGRectMake(50, 50, 100, 50)];
textFie.layer.borderWidth = 1;
[bgScrollView addSubview:textFie];
}
//手势执行的方法
-(void)updateImageVAction:(UITapGestureRecognizer *)tapGR
{
[textFie resignFirstResponder];
}
解决UIScrollView,UIImageView等控件不能响应touch事件的问题的更多相关文章
- 解决easyUI下拉控件无法触发onkeydown事件
实现在combotree下拉控件中按Backspace键清除combotree选中的值 下面的代码无法获取到键盘事件 <input class="easyui-combotree&qu ...
- duilib进阶教程 -- 各种控件的响应 (10)
到上一个教程为止,界面显示的代码就都介绍完啦,现在开始介绍控件的响应,其实在<2013 duilib入门简明教程 -- 事件处理和消息响应 (17)>里已经列出了duilib自己定义的所有 ...
- 解决VS2010使用mscomm控件无法接收数据的问题【转】
之前有用过VC6的mscomm控件.所以这次也想继续用此控件实现此功能,结果没想到刚一上手还真的绕了不少弯子.主要是因为VC2010下对mscomm控件的添加,以及对控件成员变量的添加有点小繁琐,特此 ...
- 继承的文本框控件怎么响应EN_CHANGE等消息
继承的文本框控件如何响应EN_CHANGE等消息?我从CEdit继承了一个CMyEdit类,想在这个类里填写它的一些消息.我在消息映射表里写的是MESSAGE_HANDLER(EN_CHANGE, O ...
- C# LIstbox 解决WinForm下ListBox控件“设置DataSource属性后无法修改项集合”的问题
解决WinForm下ListBox控件“设置DataSource属性后无法修改项集合”的问题 分类: winform2008-05-24 02:33 2592人阅读 评论(11) 收藏 举报 winf ...
- 解决WinForm下ListBox控件“设置DataSource属性后无法修改项集合”
解决WinForm下ListBox控件“设置DataSource属性后无法修改项集合” 最近更新: 2013-2-15 587 很少写WinForm程序第一次使用ListBox控件就遇到了比 ...
- 解决VS2010使用mscomm控件无法接收数据的问题
如果你正在使用2010,并且想用mscomm控件,遇到如下问题,那你可以看看这篇文章: 1. 添加了mscomm控件以及对应的控件变量以后发现以前mscomm的成员函数,类似setsettings() ...
- jQuery对新添加的控件添加响应事件
1. 通过id和类控制 <html> <head> <script src="jquery.js"></script> <sc ...
- WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探
原文:WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探 最近因为项目需要,开始学习如何使用WPF开发桌面程序.使用WPF一段时间之后,感 ...
随机推荐
- 为什么要用 Docker
作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势. 首先,Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多. 其次,Docker 对系统资源的利用率很 ...
- 状态模式、职责链模式——省去if-else的繁琐结构
小时候写日记都是这么写的:上午七点起床,八点之前洗脸刷牙吃早饭,十二点之前好好上课,中午一点,吃午饭,下午两点到六点,上课,下课,找请假,明天妈妈要带我去姥姥家,九点之前,看动画片,九点钟,收拾去姥姥 ...
- How to Change Default Web ADI Upload Parameters for FlexField Import / Validation
How to Change Default Web ADI Upload Parameters for FlexField Import / Validation (文档 ID 553345.1) 转 ...
- miracl去除某些特殊信息
只需要在mirdef.h中增加定义 #define MR_STRIPPED_DOWN 即可在编译的时候,去掉错误信息 #define MIRACL 32 #define MR_LITTLE_ENDI ...
- Bootstrap3 代码-变量
通过 <var> 标签标记变量. y = mx + b <var>y</var> = <var>m</var><var>x< ...
- Mybatis 批量插入、批量更新
合理的使用批量插入.更新对性能优化有很大的作用,速度明显快了N倍. 要注意数据库连接串后面要新增:&allowMultiQueries=true,表示一个sql ...
- 《Non-Negative Matrix Factorization for Polyphonic Music Transcription》译文
NMF(非负矩阵分解),由于其分解出的矩阵是非负的,在一些实际问题中具有非常好的解释,因此用途很广.在此,我给大家介绍一下NMF在多声部音乐中的应用.要翻译的论文是利用NMF转录多声部音乐的开山之作, ...
- 如何编写入门级redis客户端
概述 Redis是开源的.基于内存的数据结构存储系统,可用作数据库.缓存以及消息代理方面.Redis支持许多种数据结构,并内置了丰富的诸如冗余.脚本.事务.持久化等功能,深受业界喜爱,被各种业务系统广 ...
- [csdn markdown]使用摘记三 简便快捷的流程图
在线编写文字就可以实现复杂的流程图,再也不需要纠结了! 开始 操作流程 条件 结束 开始 st=>start: 开始 操作流程 st->op->cond 条件 cond=>co ...
- #pragma pack(x) CPU对齐
编译器会尽量把成员对齐以提高内存的命中率.对齐是可以更改的,使用"#pragma pack(x)" 可以改变编译器的对齐方式. C++固有类型的对界取编译器对齐方式与自身大小中较小 ...