今天项目需要摇一摇下单!!!!
之前没做过,度娘了一下,大致分为三种
1.系统原生的
[[UIApplication sharedApplication] setApplicationSupportsShakeToEdit:YES];
这句话应该是放在Appdelegaet里面的,不过放在需要用到的控制器里也可以
[self becomeFirstResponder];
这句让当前控制器成为第一响应者...
[self resignFirstResponder].
对应的 在viewDidDisappear方法里面取消第一响应
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
if (motion == UIEventSubtypeMotionShake)
{
//开始摇一摇
}}
- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
//结束摇一摇功能
}
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
//摇动结束
if (event.subtype == UIEventSubtypeMotionShake)
{
// 振动效果 需要#import <AudioToolbox/AudioToolbox.h>
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
}
}
//***********************以上是系统的,表示很方便,但是听说容易在裤兜里也在摇,就放弃了~~~~~(没测试过)***********//
2.使用陀螺仪检测
UIAccelerometer
UIAccelerometer * accelerometer = [UIAccelerometer sharedAccelerometer];
accelerometer.delegate = self;
accelerometer.updateInterval = 0.1;//检测频率
_accelerometer = accelerometer;//自己创建一个
//实现代理方法
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
//综合3个方向的加速度 sqrt(平方根函数),pow(指数函数x的y次)
double accelerameter = sqrt( pow( acceleration.x , 2 ) + pow( acceleration.y , 2 )
+ pow( acceleration.z , 2) );
//当综合加速度大于2.3时,就激活效果(数据越小,用户摇动的动作就越小,越容易激活)
if (accelerameter>2.3) {
//里面写触发事件
}
//****************太老了,建议不要使用**************//
3.CoreMotionManager
一个比较全面的陀螺仪数据监测工具,可以检测加速度,引力加速度等比较完善的检测工具。
//使用前需要导入 CoreMotion.framework (不晓得如何导入库???--->度娘)
其余的去看demo
网友评论