XMG 各种手势

2024-06-24 10:48
文章标签 手势 xmg

本文主要是介绍XMG 各种手势,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.

- (void)setUpTap

{

    // 创建点按手势

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];

    tap.numberOfTapsRequired=2;

    tap.delegate = self;

    

    [_imageView addGestureRecognizer:tap];

}


- (void)tap:(UITapGestureRecognizer *)tap

{

    NSLog(@"%s",__func__);

}



2.手势的代理

//是否允许触发手势

//- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer


//是否支持多指,默认不支持

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer




现在允许接收手指的触摸点。比如我下面控制的是左边不响应右边相应

//- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{



*)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{

//    // 获取当前的触摸点

//    CGPoint curP = [touch locationInView:self.imageView];

//    

//    if (curP.x < self.imageView.bounds.size.width * 0.5) {

//        return NO;

//    }else{

//        return YES;

//    }

//}


2.长按手势

UILongPressGestureRecognizer

// 默认会触发两次

- (void)setUpLongPress

{

    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];

    

    [self.imageView addGestureRecognizer:longPress];

}



- (void)longPress:(UILongPressGestureRecognizer *)longPress

{

    

    if (longPress.state == UIGestureRecognizerStateBegan) {

        

        NSLog(@"%s",__func__);

    }

}


3.UISwiperGesture

横扫手势分方向  。默认一个控件只支持一种方向

如果想让一个控件支持多个方向的需要添加多个横扫手势

// 默认轻扫的方向是往右

    UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipe)];

    

    swipe.direction = UISwipeGestureRecognizerDirectionUp;

    

    [self.imageView addGestureRecognizer:swipe];

    

    // 如果以后想要一个控件支持多个方向的轻扫,必须创建多个轻扫手势,一个轻扫手势只支持一个方向

    // 默认轻扫的方向是往右

    UISwipeGestureRecognizer *swipeDown = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipe)];

    

    swipeDown.direction = UISwipeGestureRecognizerDirectionDown;

    

    [self.imageView addGestureRecognizer:swipeDown];


4、option+shift可以把两个手指往上面移动

5.  旋转手势

#pragma mark - 旋转手势

- (void)setUpRotation

{

    UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotation:)];

    rotation.delegate = self;

    [self.imageView addGestureRecognizer:rotation];

}


// 默认传递的旋转的角度都是相对于最开始的位置

- (void)rotation:(UIRotationGestureRecognizer *)rotation

{

    

    self.imageView.transform = CGAffineTransformRotate(self.imageView.transform, rotation.rotation);

    

    // 复位

    rotation.rotation = 0;

    

    // 获取手势旋转的角度

    NSLog(@"%f",rotation.rotation);

}

6.

捏合手势(也就是缩放手势)

- (void)setUpPinch

{

    UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinch:)];

    pinch.delegate = self;

    [self.imageView addGestureRecognizer:pinch];

}


- (void)pinch:(UIPinchGestureRecognizer *)pinch

{

    self.imageView.transform = CGAffineTransformScale(self.imageView.transform, pinch.scale, pinch.scale);

    

    // 复位

    

    pinch.scale = 1;

}

7.

拖拽手势


#pragma mark - 拖拽

- (void)setUpPan

{

    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];

    

    

    [self.imageView addGestureRecognizer:pan];

}


- (void)pan:(UIPanGestureRecognizer *)pan

{

    // 获取手势的触摸点

   // CGPoint curP = [pan locationInView:self.imageView];

    

    // 移动视图

    // 获取手势的移动,也是相对于最开始的位置

    CGPoint transP = [pan translationInView:self.imageView];

    

    self.imageView.transform = CGAffineTransformTranslate(self.imageView.transform, transP.x, transP.y);

    

    // 复位

    [pan setTranslation:CGPointZero inView:self.imageView];

    

  //  NSLog(@"%@",NSStringFromCGPoint(curP));

}














这篇关于XMG 各种手势的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1089935

相关文章

【HarmonyOS】头像圆形裁剪功能之手势放大缩小,平移,双击缩放控制(三)

【HarmonyOS】头像裁剪之手势放大缩小,平移,双击缩放控制(三) 一、DEMO效果图: 二、开发思路: 使用矩阵变换控制图片的放大缩小和平移形态。 通过监听点击手势TapGesture,缩放手势PinchGesture,拖动手势PanGesture进行手势操作的功能实现。 通过对矩阵变换参数mMatrix的赋值,将矩阵变换参数赋值给image控件。实现手势操作和图片操作的同步。

Android多点触摸手势滑动的一种简单方法

GestureDetector_left = new GestureDetector(this,new GestureListener_left());       //左部  手势监听(内部类) GestureDetector_right = new GestureDetector(this,new GestureListener_right());   //右部  手势监听(内部类)

【iOS】状态栏颜色和pop手势

说明 UINavigationController 管理状态栏颜色,需要转发给单个控制器 class NavController: UINavigationController {override func viewDidLoad() {super.viewDidLoad()}override var preferredStatusBarStyle: UIStatusBarStyle {let

鸿蒙开发入门day16-拖拽事件和手势事件

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,还请三连支持一波哇ヾ(@^∇^@)ノ) 目录 拖拽事件 概述 拖拽流程 ​手势拖拽 ​鼠标拖拽 拖拽背板图 开发步骤 通用拖拽适配 多选拖拽适配 手势事件 gesture(常规手势绑定方法) priorityGesture(带优先级的手势绑定方法) parallelGesture(并行手势绑定

手势密码(四)

之前写过3篇手势密码的demo,不过没有集成到真实的企业项目中,这几天正好领到一个手势密码项目,昨天刚好弄完,今天抽空整理下,目前还没有完善,有一些地方需要更改,不过基本的流程都可以跑通了 源码下载地址。。。。。 先看主界面的入口把、里面有2个button(一个是设置手势密码、一个是校验手势密码) activity_main.xml <RelativeLayout

手势密码(三)

源码地址下载 先看第一张图片的布局文件 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_paren

手势密码(二)

代码地址下载 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_

基于SVM的手势识别,SVM工具箱详解,SVM工具箱使用注意事项

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 SVM应用实例,基于支持向量机SVM的手势识别 代码 结果分析 展望 摘要 基于支持向量机SVM的手势识别,SVM原理,SVM工具箱详解,SVM常见改进方法 支持向量机SVM的详细原理 SVM的定义 支持向量机(support vector machines, SVM)

如何处理多点触控、滑动手势,以及如何通过 `MotionEvent` 获取触摸的详细信息(如坐标、压力、手指的数量等)

处理多点触控(multi-touch)、滑动手势(scroll gestures)以及通过 MotionEvent 获取触摸的详细信息是自定义视图开发中的重要技能。以下是详细的讨论和示例代码,展示如何处理这些触控事件。 1. 处理多点触控 在 Android 中,MotionEvent 类提供了触摸事件的详细信息,包括多点触控的数据。通过 MotionEvent,你可以处理每个触摸点的信息,如

使用Leap Motion Orion开发酷炫的手势识别VR/AR应用

Leap Motion Orien支持Oculus和HTC Vive开发,当然对Unity的支持显然是必须的。 不过前提是: 1.Windows 7 64位或者windows 10 2.Leap Motion Orion 3.Oculus SDK 1.3(需要Unity 5.3.4 p1以上版本) 4.HTC Vive(需要Unity 5.4+) U