手势识别器(敲击)

一、监听触摸事件的做法

如果想监听一个view上面的触摸事件,之前的做法通常是:先自定义一个view,然后再实现view的touches方法,在方法内部实现具体处理代码

通过touches方法监听view触摸事件,有很明显的几个缺点

(1)必须得自定义view

(2)由于是在view内部的touches方法中监听触摸事件,因此默认情况下,无法让其他外界对象监听view的触摸事件(需要通过代理)

(3)不容易区分用户的具体手势行为

iOS 3.2之后,苹果推出了手势识别功能(Gesture Recognizer),在触摸事件处理方面,大大简化了开发者的开发难度

 

二、手势识别器

为了完成手势识别,必须借助于手势识别器----UIGestureRecognizer

利用UIGestureRecognizer,能轻松识别用户在某个view上面做的一些常见手势

UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势

UITapGestureRecognizer(敲击)

UIPinchGestureRecognizer(捏合,用于缩放)

UIPanGestureRecognizer(拖拽)

UISwipeGestureRecognizer(轻扫)

UIRotationGestureRecognizer(旋转)

UILongPressGestureRecognizer(长按)

 

三、敲击

每一个手势识别器的用法都差不多,比如UITapGestureRecognizer的使用步骤如下:

(1)创建手势识别器对象

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];

(2)设置手势识别器对象的具体属性

// 连续敲击2次

tap.numberOfTapsRequired = 2;

// 需要2根手指一起敲击

tap.numberOfTouchesRequired = 2;

(3)添加手势识别器到对应的view上

[self.iconView addGestureRecognizer:tap];

(4)监听手势的触发

[tap addTarget:self action:@selector(tapIconView:)];

属性介绍:

numberOfTouchesRequired   //需要多少根手指一起敲击(默认为1根)

numberOfTapsRequired    //需要敲击多少下(默认为1)

 

四、实现代码

复制代码
 1 //
 2 //  YYViewController.m
 3 //  02-手势识别器(敲击)
 4 //
 5 //  Created by apple on 14-6-18.
 6 //  Copyright (c) 2014年 itcase. All rights reserved.
 7 //
 8 
 9 #import "YYViewController.h"
10 
11 @interface YYViewController ()
12 @property (weak, nonatomic) IBOutlet UIImageView *iconView;
13 
14 @end
15 
16 @implementation YYViewController
17 
18 - (void)viewDidLoad
19 {
20     [super viewDidLoad];
21     //0.设置imageview为可交互的
22     self.iconView.userInteractionEnabled=YES;
23 //    //1.创建手势识别器
24 //    UITapGestureRecognizer *tap=[[UITapGestureRecognizer alloc] init];
25 //    //2.设置手势识别器的具体属性
26 //    //设置敲击的次数为双击(默认为单击)
27 //    tap.numberOfTapsRequired=2;
28 //    //设置需要一根手指敲击(默认)
29 //    tap.numberOfTouchesRequired=1;
30 //    //3.把手势识别器添加到对应的view上
31 //    [self.iconView addGestureRecognizer:tap];
32 //    //4.监听手势的触发事件
33 //    [tap addTarget:self action:@selector(tapView)];
34     
35     [self.iconView addGestureRecognizer:[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapView)]];
36 }
37 -(void)tapView
38 {
39     NSLog(@"被点击了");
40 }
41 
42 
43 @end
内容概要:本文介绍了基于贝叶斯优化的CNN-LSTM混合神经网络在时间序列预测中的应用,并提供了完整的Matlab代码实现。该模型结合了卷积神经网络(CNN)在特征提取方面的优势与长短期记忆网络(LSTM)在处理时序依赖问题上的强大能力,形成一种高效的混合预测架构。通过贝叶斯优化算法自动调参,提升了模型的预测精度与泛化能力,适用于风电、光伏、负荷、交通流等多种复杂非线性系统的预测任务。文中还展示了模型训练流程、参数优化机制及实际预测效果分析,突出其在科研与工程应用中的实用性。; 适合人群:具备一定机器学习基基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)础和Matlab编程经验的高校研究生、科研人员及从事预测建模的工程技术人员,尤其适合关注深度学习与智能优化算法结合应用的研究者。; 使用场景及目标:①解决各类时间序列预测问题,如能源出力预测、电力负荷预测、环境数据预测等;②学习如何将CNN-LSTM模型与贝叶斯优化相结合,提升模型性能;③掌握Matlab环境下深度学习模型搭建与超参数自动优化的技术路线。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注贝叶斯优化模块与混合神经网络结构的设计逻辑,通过调整数据集和参数加深对模型工作机制的理解,同时可将其框架迁移至其他预测场景中验证效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值