UIView独占响应事件

exclusiveTouch

A Boolean value that indicates whether the receiver handles touch
events exclusively.
Setting this property to YES causes the receiver to
block the delivery of touch events to other views in the same window. The
default value of this property is NO.

一个布尔值,用来标示一个view独占触摸事件.

当把一个view中的exclusiveTouch设置成YES时,会致使这个window屏蔽掉其他的view触发响应事件.默认值是NO.

不用说就知道他的用处了,你不知道怎么回事么?以后你会懂的,测试人员给你提bug的时候你就知道了,上例子:


#import "RootViewController.h"

@interface RootViewController ()

@property (nonatomic, strong) UIButton *button1;
@property (nonatomic, strong) UIButton *button2;

@end

@implementation RootViewController

- (void)viewDidLoad
{
[super viewDidLoad];

_button1 = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
[self.view addSubview:_button1];
_button1.backgroundColor = [UIColor redColor];
[_button1 addTarget:self
action:@selector(buttonsEvent:)
forControlEvents:UIControlEventTouchUpInside];

_button1.exclusiveTouch = YES;

_button2 = [[UIButton alloc] initWithFrame:CGRectMake(0, 100, 100, 100)];
[self.view addSubview:_button2];
_button2.backgroundColor = [UIColor greenColor];
[_button2 addTarget:self
action:@selector(buttonsEvent:)
forControlEvents:UIControlEventTouchUpInside];

_button2.exclusiveTouch = YES;
}

- (void)buttonsEvent:(id)sender
{
if (_button1 == sender)
{
NSLog(@"1");
}

if (_button2 == sender)
{
NSLog(@"2");
}
}

@end

UIView独占响应事件

时间: 2024-11-12 11:20:13

UIView独占响应事件的相关文章

让超出父视图范围的子视图响应事件,在UIView范围外响应点击

//重写该方法后可以让超出父视图范围的子视图响应事件 - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {     UIView *view = [super hitTest:point withEvent:event];     if (view == nil) {         for (UIView *subView in self.subviews) {             CGPoint tp = [sub

UIView响应事件的两个方法

参考自:https://blog.csdn.net/mushaofeng1990/article/details/62434349 用户触摸屏幕后的事件传递过程: //方法A-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{ [super hitTest:point withEvent:event]; return nil; } //方法B -(BOOL)pointInside:(CGPoint)point withEven

输入坐标和输出坐标——图片框上动态加载按钮及响应事件

在实际的项目中总会遇到一些需要动态加载一些控件,并且加载控件的响应事件的代码.现在写一个简单的例子,主要说一下里面的一些关键点:使用鼠标在窗体上的图片框中动态的添加按钮 .动态的去加载事件,肯定是需要使用对象类动态的生成,动态事件,必须要使用委托去实现.还有一个就是"动态"的实现过程,打算鼠标点下去,在鼠标单击的位置添加上按钮. 环境:Visual Studio 2010, .Net FrameWork 3.5 private void pictureBox1_MouseDown(ob

ExtJS学习笔记2:响应事件、使用AJAX加载数据

响应事件: 1.设置一个html标记 <div id="my-div">Ext JS 4 Cookbook</div> 2.使用get函数获取此标记对象 var el = Ext.get('my-div'); 3.将响应函数和对象的事件绑定 el.on('click', function(e, target, options){ alert('The Element was clicked!'); alert(this.id); }, this); 4.一次也可

关于UITableView选中效果以及自定义cell上的控件响应事件

tableView默认的点击效果是:点击cell:A,出现点击效果,点另一个cell:B的时候,A的点击效果才会消失. 1.对于tableView,比较常用的效果,是点击表格行,出现效果,点击完毕,效果消失 那么就要在代码里做一些设置.代码如下: -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath

iOS:利用代码UIBarButtonItem如何响应事件?

在storyboard中,可以通过拖拽的方法响应事件. 如果是纯代码构建的UI,UIBarButtonItem 无法调用 addTarget: action: forControlEvents: 这个方法. 如下图所示,用代码创建的left按钮: 我想让导航栏中的『left』响应事件. 网上搜了一大堆方法,都好繁琐. 刚才奇思妙想试了一下,没想到居然可以╰( ̄▽ ̄)╮ 只写了两行代码: 1 left.target = self; 2 left.action = @selector(myMetho

mfc 鼠标、键盘响应事件

一.基本目标 1.有一个基本的MFC程序,点击“关闭”则“关闭”这个程序,这点没什么好讲的,把自带的“取消”按钮,右键->属性的Caption改成“关闭”二字就可以了 2.鼠标在对话框中移动,则显示其位置信息,这个坐标是窗口内部坐标 3.如果按着鼠标右键移动鼠标,则在这个工程的标题栏会显示“按着鼠标右键移动鼠标”,松开鼠标右键回复如初 4.如果按着键盘上的Ctrl键或者Shift键在对话框的窗口中移动鼠标,标题栏同样会有相应的提示,是否同时按下也会有提示 5.左击对话框,会弹出对话框,显示鼠标位

android通知栏Notification点击,取消,清除响应事件

主要是检测android通知栏的三种状态的响应事件 这次在实现推送需求的时候,要用到android通知栏Notification点击后进入消息页面,因为要实现一个保存推送用户名字的功能,我在点击后处理了这个功能,但是测试发现我点击删除或者滑动清除后这个功能并没有执行,所以才意识到要处理删除和滑动清除的事件: 首先实现一个BroadcastReceiver public class NotificationBroadcastReceiver extends BroadcastReceiver {

3D Slicer Modify Mouse Event 修改3D Slicer中的鼠标响应事件

在3D Slicer中,我们如果想在自己写的插件中来修改默认的鼠标响应事件的话,就需要先将原有的响应事件链接删除,然后建立自定义的响应事件链接,然后将自己要实现的功能写在响应事件函数中. 比如Slicer中默认的鼠标左键拖拽,是任意旋转视图中的Camera,默认中的滑轮操作是拉远和拉近视图摄像机,默认的鼠标右键操作也是拉远和拉近视图摄像机的操作.这样滑轮就和鼠标右键的功能重复了,我们可以让鼠标右键实现其他的功能.比如在模型的Pitch, Yaw, Roll三个旋转方向上(其实旋转的只是试图中的摄