iOS 摇一摇事件

我知道的摇一摇有以下2种方案:

一、直接用系统自带的motionBegan方法

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

假如程序不响应此方法,试着加入下面方法:

-(BOOL)canBecomeFirstResponder

{

  return YES;

}

如果还不行,建议用第二种方法。

二、motionBegan+通知的方法

1.在Appdelegate里写motionBegan方法

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

{

[[NSNotificationCenter
defaultCenter]postNotificationName:@"shake"
object:self];

}

2.在需要接收通知的页面添加通知

[[NSNotificationCenter
defaultCenter]addObserver:self
selector:@selector(shakeAction)
name:@"shake"
object:nil];

写在viewDidLoad里即可。

这里的shakeAction就是摇一摇需要调用的方法,自己修改,通知名字对应就好,可自由修改。

三.补充摇一摇的其他方法

/** 摇一摇结束(需要在这里处理结束后的代码) */
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
    // 不是摇一摇运动事件
    if (motion != UIEventSubtypeMotionShake) return;
    
    NSLog(@"motionEnded");
}

/** 摇一摇取消(被中断,比如突然来电) */
- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
    NSLog(@"motionCancelled");
}

时间: 2024-08-29 05:54:00

iOS 摇一摇事件的相关文章

ios UIWindow 错误使用导致无法接收motionEnded(摇一摇)函数

今天遇到一个问题,第一次运行程序时, - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event 函数无法调用,第二次就好了.找了1天,终于找到了原因. 在第一次运行时,显示了一个帮助页面,而这个页面当时是使用再加一层UIWindow来实现的,现实时调用了 makeKeyAndVisible这个函数,导航结束后,也没有把原始的window设置为key.在ios8上没什么问题,但是在ios9上,原始的window就无法

应用进入后台监测摇一摇事件<转>

原文地址:iOS使用CoreMotion实现摇一摇功能 现在网上介绍的iOS摇一摇功能,基本是以借助系统的ShakeToEdit功能来实现,什么是ShakeToEdit?看下图应该就能懂: 怎么实现?请看以下代码: [objc] view plain copy //ViewController 加入以下两方法 -(BOOL)canBecomeFirstResponder { //让当前controller可以成为firstResponder,这很重要 return YES; } -(void)m

摇一摇 iOS

//微信的摇一摇是怎么实现的~发现原来 ios本身就支持//在 UIResponder中存在这么一套方法 - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0); - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event __OSX_AV

利用HTML5的devicemotion事件实现手机摇一摇抽奖,年会抽奖

摇一摇JS脚本逻辑:接下来是移动端JS脚本逻辑的实现,摇一摇的实现需借助html5新增的devicemotion事件,获取设备在位置和方向上的改变速度的相关信息,该事件的基本使用如下: if (window.DeviceMotionEvent) { window.addEventListener('devicemotion', handler, !1); lastTime = new Date(); } else { alert('你的浏览器不支持摇一摇功能.'); } devicemotion

iOS开发——高级技术&摇一摇功能的实现

摇一摇功能的实现 在AppStore中多样化功能越来越多的被使用了,所以今天就开始介绍一些iOS开发的比较实用,但是我们接触的比较少的功能,我们先从摇一摇功能开始 在 UIResponder中存在这么一套方法 1 - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0); 2 3 - (void)motionEnded:

摇一摇事件

html5新增了一个devicemotion的事件,可以使用手机的重力感应.如下代码所示: window.ondevicemotion = function(event){ var gravity = event.accelerationIncludingGravity; console.log(gravity.x, gravity.y, gravity.z); } x,y,z表示三个方向的重力加速度,如下图所示: x是手机短边,y是长边,z是和手机屏幕垂直的方向,当把手机平着放的时候,由于x.

iOS 实现 摇一摇

摇一摇功能:调用了系统自带加速器,当设备摇动时,系统会 计算出加速器的加速值,然后告诉设备是否发生摇动手势,系统只会运动开始和结束时通知你,并不会在运动发生的整个过程中始终向你报告每一次运动.例如,你快速摇动设备三次,那只会收到一个摇动事件. 想要实现摇动手势,首先需要使视图控制器成为第一响应者,注意不是单独的控件.成为第一响应者最恰当的时机是在视图出现的时候,而在视图消失的时候释放第一响应者. 1 -(BOOL)canBecomeFirstResponder 2 { 3 return YES;

ios实现微信摇一摇功能

微信摇一摇功能大家想必用过- ios SDK帮我们完成了所有功作,我们只需要添加相应的逻辑即可 下面贴出实现代码(在对应的ViewController中添加如下代码): #pragma mark - motion refresh - (BOOL)canBecomeFirstResponder { return YES; } - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event { NSLog(@"开始摇动&qu

iOS摇一摇手机,播放微信摇一摇音效

实现微信摇一摇播放音效,代码如下:- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{    if (motion == UIEventSubtypeMotionShake) {         NSLog(@"摇一摇,哈哈哈");         [self playSoundEffect:@"yaoyiyao"];    }}-(void)playSoundEffect:(N