iOS通过UISwitch控制摇一摇

很多项目中用到了摇一摇功能,当我去实现的时候,发现很多问题:

1、如何控制摇一摇功能?即打开和关闭
2、如何在所有控制器中实现摇一摇功能?

摇一摇功能很好实现,但如何控制它,却不那么简单,我找了很多资料,最后决定用NSUserDefaults属性存储来控制摇一摇功能

具体实现细节

我在个人设置里面添加摇一摇开关

1、通过NSUserDefaults属性存储保存UISwitch开关的状态(解决问题一)
在此开关下实现以下代码:

- (IBAction)shakeNavi:(UISwitch *)sender {
 BOOL value = sender.on;
 // 保存UISwitch的开关状态
 [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:value] forKey:@"switch_state"];
 if (value) {
  [[NSUserDefaults standardUserDefaults] setObject:@"shake" forKey:@"isShake"];
  [[NSUserDefaults standardUserDefaults] synchronize];// 同步
 } else {
  [[NSUserDefaults standardUserDefaults] setObject:@"notShake" forKey:@"isShake"];
  [[NSUserDefaults standardUserDefaults] synchronize];// 同步
 }
}

2、我是自定义的UINavigationController,我把摇一摇功能放在这里,因为在UINavigationController下得控制器,都可以实现摇一摇功能(解决问题二)
很多资料都说添加这两行代码,但我没加,摇一摇功能却能实现,不明觉厉

// 设置允许摇一摇功能
[UIApplication sharedApplication].applicationSupportsShakeToEdit = YES;
 //并让自己成为第一响应者
 [self becomeFirstResponder];
#pragma mark - 摇一摇相关方法
// 摇一摇开始摇动
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
 NSString *str = [[NSUserDefaults standardUserDefaults] objectForKey:@"isShake"];

 if ([str isEqualToString:@"shake"]) {
  NSLog(@"开始摇动");
  //播放震动
  AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
 }
 return;
}

// 摇一摇取消摇动
- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event {
 NSLog(@"取消摇动");
 return;
}

// 摇一摇摇动结束
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {

 NSString *str = [[NSUserDefaults standardUserDefaults] objectForKey:@"isShake"];

 if ([str isEqualToString:@"notShake"]) {
  return;
 }
 if (event.subtype == UIEventSubtypeMotionShake) { // 判断是否是摇动结束
  NSLog(@"结束摇动");
  // 在这里执行摇动结束需要执行的方法
 }
 return;
}

总结:如果需要在摇一摇过程中实现震动,需添加:

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • IOS微信摇一摇声音无法播放的解决办法

    在IOS中第一次调用play方法播放音频会被阻止,必须得等用户有交互动作,比如touchstart,click后才能正常调用,所以可以在摇一摇之前提醒用户点击一下开始游戏的按钮或者给用户一个弹窗,用户点击的时候播放一个超级短的无声音文件,之后替换src,这样再调用play方法就可以了. 代码如下如: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /

  • iOS使用CoreMotion实现摇一摇功能

    现在网上介绍的iOS摇一摇功能,基本是以借助系统的ShakeToEdit功能来实现,什么是ShakeToEdit?看下图应该就能懂: 怎么实现?请看以下代码: //ViewController 加入以下两方法 -(BOOL)canBecomeFirstResponder { //让当前controller可以成为firstResponder,这很重要 return YES; } -(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEven

  • iOS实现微信朋友圈与摇一摇功能

    本Demo为练手小项目,主要是熟悉目前主流APP的架构模式.此项目中采用MVC设计模式,纯代码和少许XIB方式实现.主要实现了朋友圈功能和摇一摇功能. 预览效果: 主要重点 1.整体架构 利用UITabBarController和UINavigationController配合实现.其中要注意定义基类,方便整体上的管理,例如对UINavigationController头部的颜色,字体和渲染颜色等设置.以及对UITabBarController的底部的渲染等. [self.navigationB

  • iOS仿微信摇一摇动画效果加震动音效实例

    众所周知, 微信中的摇一摇功能: 搜索人/歌曲/电视,同样在一些其他类APP中也有一个摇一摇签到, 摇一摇随机选号等功能,下面以微信摇一摇功能来介绍实现原理. 对于摇一摇功能, 在iOS中系统默认为我们提供了摇一摇的功能检测API. iOS 中既然已经提供了接口, 我们直接调用就好了. #import <QuartzCore/QuartzCore.h> #import <AudioToolbox/AudioToolbox.h> 实现原理 1. 监听摇一摇方法 // 摇一摇开始 -

  • iOS实现“摇一摇”与“扫一扫”功能示例代码

    "摇一摇"功能的实现: iPhone对 "摇一摇"有很好的支持,总体说来就两步: 在视图控制器中打开接受"摇一摇"的开关; - (void)viewDidLoad { // 设置允许摇一摇功能 [UIApplication sharedApplication].applicationSupportsShakeToEdit = YES; // 并让自己成为第一响应者 [self becomeFirstResponder]; } 在"摇一摇

  • IOS 实现摇一摇的操作

    要实现摇一摇的功能,类似于微信的摇一摇 方法1:通过分析加速计数据来判断是否进行了摇一摇操作(比较复杂) 方法2:iOS自带的Shake监控API(非常简单) 本文介绍方法2: 判断摇一摇的步骤: 1)检测到开始摇动 - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{ //检测到后可做一些处理 } 2)摇一摇被取消或中断 - (void)motionCancelled:(UIEventSubtype)mot

  • iOS仿微信摇一摇功能

    iOS仿照微信摇一摇功能实现 一.描述 需要做一个界面,仿照微信摇一摇,获取接口进行签到功能. 首先明确以下几点: 1.需要震动. 2.需要声音.(准备好mp3音效) 二.直接贴代码 / Created by 石雄伟 on 16/7/29. // Copyright © 2016年 石雄伟. All rights reserved. // #import "SignBoardViewController.h" #import <AVFoundation/AVFoundation.

  • iOS通过UISwitch控制摇一摇

    很多项目中用到了摇一摇功能,当我去实现的时候,发现很多问题: 1.如何控制摇一摇功能?即打开和关闭 2.如何在所有控制器中实现摇一摇功能? 摇一摇功能很好实现,但如何控制它,却不那么简单,我找了很多资料,最后决定用NSUserDefaults属性存储来控制摇一摇功能 具体实现细节 我在个人设置里面添加摇一摇开关 1.通过NSUserDefaults属性存储保存UISwitch开关的状态(解决问题一) 在此开关下实现以下代码: - (IBAction)shakeNavi:(UISwitch *)s

  • 利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换

    我比较喜欢听音乐,特别是周末的时候,电脑开着百度随心听fm,随机播放歌曲,躺在床上享受.但碰到了一个烦人的事情,想切掉不喜欢的曲子,还得起床去操作电脑换歌.于是思考能不能用手机控制电脑切换歌曲,经过一段事件的思考,绝对采用html5+socket.io来实现这个功能.首先我把该功能的实现拆分为以下几个步骤: 1.移动端前端页面+脚本逻辑实现 2.PC端前端页面+脚本逻辑实现 3.后台逻辑实现 4.加入socket.io实现长连接 5.实现移动端控制PC端逻辑 1.移动端页面脚本的实现 html页

  • iOS实现微信摇一摇功能

    一.描述 需要做一个界面,仿照微信摇一摇,获取接口进行签到功能. 首先明确以下几点: 1.需要震动. 2.需要声音.(准备好mp3音效) 二.这边直接贴代码 / Created by 石雄伟 on 16/7/29. // Copyright © 2016年 石雄伟. All rights reserved. // #import "SignBoardViewController.h" #import <AVFoundation/AVFoundation.h> #import

  • Android实现iPhone晃动撤销输入功能 Android仿微信摇一摇功能

    很多程序中我们可能会输入长文本内容,比如短信,写便笺等,如果想一次性撤销所有的键入内容,很多手机需要一直按住退格键逐字逐句的删除,稍稍麻烦,不过在iPhone上,有个人性化的功能,当我们想要去撤销刚刚输入的所有内容的时候,可以轻轻晃动手机,会弹出提示框,点击确定就可以清空内容,如下图: 在android中,一般手机貌似没有定制这个功能,不过我们可以自己去实现这样的功能,放置在我们的项目程序中,体现更人性化的设计,思路很简单,主要是利用手机内置的加速度传感器装置,其实大家一定会想到微信的"摇一摇&

随机推荐