给UIView添加手势

对于不能addTarget的UI对象,添加手势为他们带来了“福音”,以为UIView添加手势为例,揭开手势的面目。

1,创建一个view先,

UIView * jrView=[[UIViewalloc] initWithFrame:CGRectMake(0, 0, 160, 160)];

    jrView.center=self.view.center;

    jrView.backgroundColor=[UIColorgreenColor];

    [self.viewaddSubview:jrView];

2,添加手势

常用的手势:点击、长按、扫一下(表面滑过)、拖动、旋转、捏合。。

①:点击

首先,定义点击手势,然后设置手势的相关属性(点击次数、接触点的个数。。),最后将手势添加到view上即可。

点击了view就执行手势的@selector(tapGestureAction:)方法(所有的手势都是这样);

/** --点击-- */
UITapGestureRecognizer * tap=[[UITapGestureRecognizeralloc] initWithTarget:selfaction:@selector(tapGestureAction:)];
//-=--点击次数
    tap.numberOfTapsRequired=2;

//=-=-=触碰点的个数
    tap.numberOfTouchesRequired=2;

//tap.numberOfTouches;  readOnly

    [jrView addGestureRecognizer:tap];

②:长按

定义手势

属性:算是长按的区域,算是长按的时间

添加手势到view

/** --长按-- */
UILongPressGestureRecognizer * lPress=[[UILongPressGestureRecognizeralloc] initWithTarget:selfaction:@selector(longPressAction:)];

//===--=长按的识别区域(在这里面即使移动了,算长按)
    lPress.allowableMovement=10;
//=-=-==-按的时间-(按多久算长按)
    lPress.minimumPressDuration=0.5;

    [jrView addGestureRecognizer:lPress];

③:拖动

就是这么简洁;

/** 拖动 */

UIPanGestureRecognizer * pan=[[UIPanGestureRecognizeralloc] initWithTarget:selfaction:@selector(panAction:)];

    [jrView addGestureRecognizer:pan];

④:轻扫(表面滑过)

可以设置滑过的方向,不同的方向触发不同的事件;

/**  轻扫  */
UISwipeGestureRecognizer * swipe=[[UISwipeGestureRecognizeralloc] initWithTarget:selfaction:@selector(swipeAction:)];

    swipe.direction=UISwipeGestureRecognizerDirectionLeft;

    [jrView addGestureRecognizer:swipe];

⑤: 旋转

竟然有代理,请查看代理协议;

/**  旋转  */
UIRotationGestureRecognizer * rotation=[[UIRotationGestureRecognizeralloc] initWithTarget:selfaction:@selector(rotationAction:)];

    rotation.delegate=self;

    [jrView addGestureRecognizer:rotation];

⑥: 捏合

要捏合的话,两个手指操作(合情合理);

/**  捏合  */
UIPinchGestureRecognizer * pinch=[[UIPinchGestureRecognizeralloc] initWithTarget:selfaction:@selector(pinchAction:)];

    pinch.delegate=self;

    [jrView addGestureRecognizer:pinch];

同时,还可以设置同一个view响应多个手势,所以有了手势的delegate;

#pragma mark - 代理方法,使操作对象响应多个手势
- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{

returnYES;

}

手势? so easy!

时间: 2024-10-13 22:23:15

给UIView添加手势的相关文章

UIView添加手势 然后UITableView 添加进这个View 导致UITableView 的单元格点击事件无效

#import "ViewController.h" @interface ViewController ()<UITableViewDataSource,UITableViewDelegate,UIGestureRecognizerDelegate> @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UIView * v = [[UIView alloc] init

IOS - UIView添加点击事件

UIView通过手势(Gesture-UITapGestureRecognizer)添加点击事件, 类似于UIButton的效果. 示例: UIImageView *iKnowIcon = [CYResource loadImageView:@"free-question-once-more-i-know.png"]; iKnowIcon.top = questionIcon.top + scaleWidthWith320(200); iKnowIcon.centerX = self.

UITableviewCell 点击事件与添加手势的冲突

#pragma mark - 添加手势隐藏键盘 - (void)tabBackground { UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOnce)]; tap.delegate = self; [tap setNumberOfTouchesRequired:1]; [self.view addGestureRecognizer:tap

XIB添加手势

首先添加手势控件 其次添加使用对象(不是Outlets是Outlet Collections) 其次便是关联M文件,建立条件出发时执行的方法 OK

李洪强iOS开发之添加手势

李洪强iOS开发之添加手势 02 - 添加手势

Swift中给UIView添加Badge

extension UIView{ //任意UIView添加badge func showBadgeValue(#strBadgeValue: String) -> Void{ let tabBar = UITabBar(frame: CGRectMake(0, 0, 320, 50)) let item = UITabBarItem(title: "", image: nil, tag: 0) item.badgeValue = strBadgeValue let array

UIScrollView添加手势显示和隐藏键盘

大概思路:本身textField点击键盘弹出,点击手势后自身view结束编辑,手势设为no,再点击textField时键盘弹出,这时用通知通知手势交互为yes即可 首先在.h文件中添加手势协议<UIGestureRecognizerDelegate> 在.m文件中声明一个手势指针 UITapGestureRecognizer * _gesture; _gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@se

【Swift 2.1】为 UIView 添加点击事件和点击效果

前言 UIView 不像 UIButton 加了点击事件就会有点击效果,体验要差不少,这里分别通过自定义和扩展来实现类似 UIButton 的效果. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com 正文 一.为 UIView 添加点击事件 extension UIView { func addOnClickListener(target: AnyObject, action: Sel

xib添加手势后报错:-[UITapGestureRecognizer setFrame:]: unrecognized selector sent to instance xxx

主要原因如下: + (instancetype)mineHeaderView { return [[NSBundle mainBundle] loadNibNamed:@"DDMineHeaderView" owner:nil options:nil].lastObject; } 添加手势后, 以上的创建对象方法就不可以通过lastObject来获取了, 因为获取到的是最后添加的手势对象, 所以才会出现这个错误 解决方法: 将lastObject改为firstObject即可..