iOS 实现长按录音上滑取消的几种思路

关于录音按钮的一些总结

关于录音按钮的一些总结

按住录音, 上滑松手取消, 上滑不松下滑到按钮上继续录音

这个需求总结了一下网上的思路, 大概有如下几种

  1. 在 touchesBegan, touchesMoved, touchesEnded 三个方法中通过判断当前触摸的点的坐标与按钮的热区范围的关系作出相应反应
  2. 添加长按手势, 对手势的 gestureRecognizerStaeBegin, changed, ended 三种状态判断此时手指位置与按钮关系, 从而有不同反应.
  3. 对按钮的所有几种点击事件进行不同处理, touchUpInside, touchDown, touchUpOutside, touchCancel, touchDragExit, touchDragEnter, 主要是为这六个点击事件绑定方法进行监听, 至于每种方法做什么的从名字上还是很简单能够分辨的

大致优劣比较

  1. 三个方法只需要重写就可以了, 不需要再去多声明额外的方法, 简单. 但是如果当前页面有其他touch 监听, 容易混淆.
  2. 跟第一种区别其实不大, 而且API 也已经提供好, 只需要在不同状态下进行处理就可以了, 但是很容易与当前页面的其他手势冲突.
  3. 最精细的一种方法, 只会与按钮本身有交互, 不会涉及到其他控件. 但是需要监听6个按钮响应事件, 要实现6个额外的方法.比较麻烦.

获取录音的当前时间

设置 meteringEnabled 属性即可.

获取当前录音音量

1 recoder.updateMeters()
2 recorder.averagePowerForChannel //平均值
3 recorder.peakPowerForChannel //最大值

 

录音器的设定参数

1 recorderSettingDic = 
2 [
3   AVFormatIDKey: NSNumber(unsignedInt: kAudioFormatMPEG4AAC),
4   AVNumberOfChannelsKey: 2, //录音的声道数,立体声为双声道
5   AVEncoderAudioQualityKey : AVAudioQuality.Max.rawValue,
6   AVEncoderBitRateKey : 320000,
7   AVSampleRateKey : 44100.0 //录音器每秒采集的录音样本数
8 ]

 

额外需要注意的部分

在dealloc 方法或者 deinit 方法中最好 recorder = nil, player = nil(如果有播放录音的话)

转载于:https://www.cnblogs.com/SquirrelStock/p/6168340.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值