IOS开发检测设备摇动

设备摇动检测的两种方法简单的记录下

方法一

首先在delegate中添加

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions

{

// Override point for customization after application launch

//添加检测晃动

application.applicationSupportsShakeToEdit =
YES;

}

其次在需要检测的ViewController中添加

//检测手机晃动

-(BOOL)canBecomeFirstResponder

{

return YES;

}

- (void)viewWillDisappear:(BOOL)animated {

[self resignFirstResponder];

[super viewWillDisappear:animated];

}

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event

{

if (motion == UIEventSubtypeMotionShake)

{

UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"提示" message:@"恭喜你获得100-5优惠劵一张"
delegate:self cancelButtonTitle:@"关闭" otherButtonTitles: nil];

[alertView show];

NSLog(@"检测到晃动");

}

}

-(void)prarGotProblem:(NSString *)problemTitle withDetails:(NSString *)problemDetails

{

[self alert:problemTitle withDetails:problemDetails];

}

方法二使用CoreMotion

引入需要的头文件

#import <CoreMotion/CoreMotion.h>

下需要检测的 viewDidLoad初始化CMMotionManager 同时启动一个NSTimer检测X、Y、Z轴的变化

- (void)viewDidLoad {

[super
viewDidLoad];

// Do any additional setup after loading the view.

NSTimer *AutoTimer = [NSTimer
scheduledTimerWithTimeInterval:1.0/60.0
target:self
selector:@selector(autoChange)
userInfo:nil
repeats:YES];

_manager = [[CMMotionManager
alloc]init];

_manager.accelerometerUpdateInterval=1.0/60.0;

[_manager
startAccelerometerUpdates];

}

-(void)autoChange

{

//根据自己需求调节x y z

if (fabsf(_manager.accelerometerData.acceleration.x)
> 1.0 ||
fabsf(_manager.accelerometerData.acceleration.y)
> 1.2 ||
fabsf(_manager.accelerometerData.acceleration.z)
> 0.5)

{

NSLog(@"我晃动了
。。。。。");

}

}

注:方法一中晃动幅度大的情况下才会调用,方法二中可以根据自己的需要调节

时间: 2024-11-07 17:59:52

IOS开发检测设备摇动的相关文章

iOS开发-检测用户截屏, 并获取所截图片

微信可以检测到用户截屏行为(Home + Power),并在稍后点击附加功能按钮时询问用户是否要发送刚才截屏的图片,这个用户体验非常好.于是乎, 我也想着实现这个功能. 在iOS7之前, 如果用户截屏,系统会自动取消屏幕上的所有 touch 事件,(使用 touchesCancelled:withEvent: 这个方法)那么我们就可以检测这个方法的调用,然后加载本地最新图片再加以判断来实现我们的目的.但在 iOS 7 之后,截屏不再会取消屏幕的 touch 事件,所以导致了 Snapchat 和

iOS开发 - 检测网络状态(WIFI、2G/3G/4G)

检测网络状态 在网络应用中,需要对用户设备的网络状态进行实时监控,目的是 让用户了解自己的网络状态,防止一些误会(比如怪应用无能) 根据用户的网络状态进行智能处理,节省用户流量,提高用户体验 WIFI\3G网络:自动下载高清图片 低速网络:只下载缩略图 没有网络:只显示离线的缓存数据 苹果官方提供了一个叫Reachability的示例程序,便于开发者检测网络状态 https://developer.apple.com/library/ios/samplecode/Reachability/Rea

iOS开发-获取设备型号信息

开发中有的时候查看设计统计数据,或者通过日志查看错误信息,这个时候我们就需要获取获取设备信息,看下关于设备有几种方法: NSLog(@"%@",[[UIDevice currentDevice] name]);//设备名称 NSLog(@"%@",[[UIDevice currentDevice] model]);//设备类型 NSLog(@"%@",[[UIDevice currentDevice] localizedModel]); NSLo

iOS开发 - 检测路径下文件夹是否存在

NSFileManager *fileManager = [NSFileManager defaultManager]; NSArray *homePath = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); NSString *libraryPath = [homePath objectAtIndex:0]; NSString *tempPath = [libraryPath str

iOS开发&mdash;&mdash;检测屏幕旋转

步骤一.注册通知 1: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarOrientationChange:) name:UIApplicationDidChangeStatusBarOrientationNotification object:nil]; .csharpcode, .csharpcode pre { font-size: small; color: black;

iOS开发摇动手势实现详解

1.当设备摇动时,系统会算出加速计的值,并告知是否发生了摇动手势.系统只会运动开始和结束时通知你,并不会在运动发生的整个过程中始终向你报告每一次运动.例如,你快速摇动设备三次,那只会收到一个摇动事件. 2,想要实现摇动手势,首先需要使视图控制器成为第一响应者,注意不是单独的控件.成为第一响应者最恰当的时机是在视图出现的时候,而在视图消失的时候释放第一响应者. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 -(BOOL)canBecomeFirstRespond

iOS开发:在多平台、设备及64位架构上运行

最近在新工程上线是遇到很多适配的问题,尤其是旧工程64位设备的适配,现在整理一下. Base SDK vs. Deplyment Target 1.配置Base SDK设置 1)选择工程导航面板上的工程文件 2)编辑面板上搜索base sdk Base SDK设置引导编译器使用该版本的SDK编译和构建应用,也就是说,它会直接控制应用使用哪些API. 2.Deplyment Target运行应用需要的最低操作系统版本 支持多个SDK时的注意事项: 框架的可用性有时新的SDK会增加一个完整框架,较早

XE6 &amp; IOS开发之免证书真机调试(3):生成iPA文件并安装到其它苹果设备上(有图有真相)

XE6 & IOS开发之免证书真机调试(3):生成iPA文件并安装到其它苹果设备上(有图有真相) 2014-08-27 20:51 网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 1.既然我们已经在真机上运行过App了,那么现在就来生成一下.--------------------------------------------------------------- 1.在虚拟机下,点一下桌面(星空图随便某个地方),在F

【ios开发】 判断设备屏幕尺寸、分辨率

IOS 设备现有的分辨率如下:iPhone/iPod Touch普通屏                          320像素 x 480像素       iPhone 1.3G.3GS,iPod Touch 1.2.33:2 Retina 屏           640像素 x 960像素        iPhone 4.4S,iPod Touch 416:9 Retina 屏               640像素 x 1136像素      iPhone 5,iPod Touch 5