转载自  http://blog.csdn.net/samguoyi/article/details/7911499

如果只是想获取屏幕点击事件有一个最简单的办法,就是写一个透明的uibutton覆盖在需要获取点击事件的view上面。

这里用第二种办法:

UIGestureRecognizer有很多继承自它的UIxxxGestureRecognizer:

UILongPressGestureRecognizer

UIPanGestureRecognizer

UIPinchGestureRecognizer

UIRotationGestureRecognizer

UISwipeGestureRecognizer

UITapGestureRecognizer

可以响应很多的点击事件,这里的demo介绍点击事件。

        //
// MainViewController.m
// testapple
//
// Created by kiri on 12-5-8.
// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
// #import "MainViewController.h" @implementation MainViewController
@synthesize imageview; #pragma mark - View lifecycle // Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView
{
[super loadView];
self.view.tag = ; UITapGestureRecognizer *singleOne = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onviewtabed:)];
singleOne.numberOfTouchesRequired = ;
singleOne.numberOfTapsRequired = ;
singleOne.delegate = self;
[self.view addGestureRecognizer:singleOne]; UILongPressGestureRecognizer *longpress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(onlongtabed:)];
longpress.minimumPressDuration = 1.0;///至少按1秒
longpress.numberOfTouchesRequired = ;//只有一个触点
[self.view addGestureRecognizer:longpress];
[longpress release]; UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"button" forState:UIControlStateNormal];
button.frame = CGRectMake(, , , );
[button addTarget:self action:@selector(onbuttonclick) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button]; UITapGestureRecognizer *singleTwo = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onviewtabed:)];
singleTwo.numberOfTouchesRequired = ;
singleTwo.numberOfTapsRequired = ;
singleTwo.delegate = self; self.imageview = [[UIImageView alloc] init];
imageview.frame = CGRectMake(, , , );
imageview.image = [UIImage imageNamed:@"test.png"];
imageview.tag = ;
[imageview addGestureRecognizer:singleTwo];
imageview.multipleTouchEnabled = YES;//设置属性使得uiimageview可以响应屏幕事件
imageview.userInteractionEnabled = YES;
[self.view addSubview:imageview]; aaaimg = [UIImage imageNamed:@"aaa.jpg"];
bbbimg = [UIImage imageNamed:@"bbb.jpg"];
imageview.image = aaaimg; } - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
NSLog(@"gestureRecognizer");
return ([[touch.view class] isSubclassOfClass:[UIButton class]]) ? NO : YES;///当点击按钮时使得原按钮事件去响应,而不是gesture事件
} -(void)onviewtabed:(UITapGestureRecognizer *)sender
{
NSLog(@"view touchs on tag = %d",sender.view.tag);
if(sender.state != UIGestureRecognizerStateEnded && sender.state != UIGestureRecognizerStateFailed)///注意需要判断状态
{
///do things
}
} -(void)onlongtabed:(UILongPressGestureRecognizer *)sender
{
NSLog(@"on long tabed");
} // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
[super viewDidLoad];
} -(void)opinbackthread
{ } #pragma mark - myfunctions
-(void)onbuttonclick
{
NSLog(@"onbuttonclick"); } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{ return (interfaceOrientation == UIInterfaceOrientationPortrait) || (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
} -(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
NSLog(@"did rotate");
} -(void)dealloc
{
[super dealloc];
} @end

使用UIGestureRecognizer监听屏幕事件的更多相关文章

  1. [Swift通天遁地]三、手势与图表-(1)监听屏幕上触摸事件的各种状态

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  2. 全局监听SCREEN_ON和SCREEN_OFF的替代方法--监听屏幕解锁事件

    在做一个程序的时候,需要时刻保持某一服务是启动的,因此想到了通过监听屏幕SCREEN_ON和SCREEN_OFF这两个action.奇怪的是,这两个action只能通过代码的形式注册,才能被监听到,使 ...

  3. IOS监听屏幕状态

    一.定义两个宏   //锁屏通知 #define NotificationOff CFSTR("com.apple.springboard.lockcomplete")   //解 ...

  4. JS 获取和监听屏幕方向变化(portrait / landscape)

    移动设备的屏幕有两个方向: landscape(横屏)和portrait(竖屏),在某些情况下需要获取设备的屏幕方向和监听屏幕方向的变化,因此可以使用Javascript提供的 MediaQueryL ...

  5. Android监听屏幕解锁和判断屏幕状态

    开发后台服务的时候经常需要对屏幕状态进行判断,如果是想要监听屏幕解锁事件,可以在配置里面注册action为 android.intent.action.USER_PRESENT的广播,则可以监听解锁事 ...

  6. pc端监听屏幕实现导航固定定位

    要点:占位符 js,监听屏幕滚动事件,当滚动条距离浏览器顶部的距离 大于 要固定定位开始以下元素的距离,则给要固定元素添加fixed样式. 初始化方法时,要给占位符添加样式 function sort ...

  7. [Swift通天遁地]三、手势与图表-(2)监听手势事件自由拖动图像视图

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  8. [JS]笔记12之事件机制--事件冒泡和捕获--事件监听--阻止事件传播

    -->事件冒泡和捕获-->事件监听-->阻止事件传播 一.事件冒泡和捕获 1.概念:当给子元素和父元素定义了相同的事件,比如都定义了onclick事件,点击子元素时,父元素的oncl ...

  9. JS 中的事件绑定、事件监听、事件委托

    事件绑定 要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素绑定事件处理函数.所谓事件处理函数,就是处理用户操作的函数,不同的操作对应不同的名称. 在JavaScript中,有 ...

随机推荐

  1. 引用问题rayshop.common总是提醒重复引用问题

    引用问题rayshop.common总是提醒重复引用问题 解决办法:在插件组里的所有项目引用,使用不能复制属性

  2. UVa 10954 (Huffman 优先队列) Add All

    直接用一个优先队列去模拟Huffman树的建立过程. 每次取优先队列前两个数,然后累加其和,把这个和在放入到优先队列中去. #include <cstdio> #include <q ...

  3. bzoj2428: [HAOI2006]均分数据

    模拟退火.挺好理解的.然后res打成了ans一直WA一直WA...!!!一定要注意嗷嗷嗷一定要注意嗷嗷嗷一定要注意嗷嗷嗷. 然后我就一直卡一直卡...发现最少1800次的时候就可以出解了.然后我就去调 ...

  4. Intellij IDEA13 创建多模块Maven项目

    目标:构建一个类似于如下图所示的这种结构的Maven项目. 首先,需要选中“File”——>“New Project”如下图所示 选中“Maven”,设置项目名称与项目构建地址,点击“Next” ...

  5. Volley : "参数param:{ inoutNo:inoutNo ,whcode:’’}

    private void fuzzySearch() { mRequestQueue = Volley.newRequestQueue(getActivity()); String str = Sha ...

  6. [反汇编练习] 160个CrackMe之024

    [反汇编练习] 160个CrackMe之024. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...

  7. HDFS的基本概念

    转:http://www.cnblogs.com/forfuture1978/archive/2010/03/14/1685351.html

  8. ArcEngine 通过IRelationalOperator.Relation判断几何体相交

    IRelationalOperator 接口: 1. Provides access to members that determine if a certain spatial relationsh ...

  9. pcap文件的文件头的link type

    http://www.tcpdump.org/linktypes.html Link-layer header type values LINKTYPE_ name LINKTYPE_ value C ...

  10. 数组名的含义.xml

    pre{ line-height:1; color:#1e1e1e; background-color:#f0f0f0; font-size:16px;}.sysFunc{color:#627cf6; ...