源码下载地址:http://download.youkuaiyun.com/detail/liu537192/8549765
效果图:
图1:
核心代码:
//
// JLViewController.m
// 05-敲击
//
// Created by XinYou on 15-3-31.
// Copyright (c) 2015年 vxinyou. All rights reserved.
//
#import "JLViewController.h"
#import "MBProgressHUD+MJ.h"
@interface JLViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *iconView;
@end
@implementation JLViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// 默认情况下图片是不能跟用户进行交互的,也就是默认情况下userInteractionEnabled = NO;
// 如图1所示,也可以在storyboard中设置这个属性。
self.iconView.userInteractionEnabled = YES;
// 1,创建手势识别器
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];
// 设置敲击的次数为2,也就是说需要连续敲击两次才能识别手势。
// tap.numberOfTapsRequired = 2;
// 设置接触点的个数为2,也就是说需要两根手指触摸才能识别手势。
// tap.numberOfTouchesRequired = 2;
// 默认情况下是不支持多点触控的,勾选图1中所示的 Multiple Touch即可,或者用代码设置:
// self.iconView.multipleTouchEnabled = YES;
// 2,添加手势识别器到对应的view
[self.iconView addGestureRecognizer:tap];
// 3,添加监听方法
[tap addTarget:self action:@selector(tapIconView)];
// 设置代理
tap.delegate = self;
}
- (void)tapIconView{
[MBProgressHUD showSuccess:@"图片被点击了"];
}
#pragma mark -代理方法
/**
* 当敲击了view时,会先调用这个方法,如果返回YES表示本次敲击有效,返回NO表示本次敲击无效(忽略本次敲击)
*/
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
CGPoint point = [touch locationInView:touch.view];
// 只有敲击图片的左边才有效
if (point.x <= self.iconView.frame.size.width * 0.5) {
return YES;
}
return NO;
}
@end