UICollectionViewCell 中的按钮在单击时发出键盘声音
Posted
技术标签:
【中文标题】UICollectionViewCell 中的按钮在单击时发出键盘声音【英文标题】:Button in UICollectionViewCell Makes Keyboard Sound When Clicked 【发布时间】:2018-05-07 10:58:08 【问题描述】:我有一个 UICollectionViewCell
(CustomCell
) 的子类,它有一个 UIButton
(button
),我想在按下它时播放声音。特别是,我希望当变量isOn
变为true
时播放键盘字母的声音,并且当变量isOn
变为false
时播放键盘退格(或删除)声音。
到目前为止,我有以下内容:
class CustomCell: UICollectionViewCell
private var isOn = true
@IBOutlet weak private var button: UIButton!
didSet
button.addTarget(self, action: #selector(self.toggleButton), for: .touchUpInside)
@objc private func toggleButton()
if (isOn)
/// Play keyboard backspace (delete) sound ...
UIDevice.current.playInputClick()
else
/// Play keyboard text sound ...
UIDevice.current.playInputClick()
isOn = !isOn
我也实现了UIInputViewAudioFeedback
协议如下:
extension CustomCell: UIInputViewAudioFeedback
func enableInputClicksWhenVisible() -> Bool
return true
但是,按下按钮时没有声音。
感谢您的帮助。
【问题讨论】:
您的代码不起作用,因为它仅在符合UIInputViewAudioFeedback
的视图是文本字段或文本视图的inputView
时才起作用。
【参考方案1】:
播放键盘字母的声音:-
enum SystemSound: UInt32
case pressClick = 1123
case pressDelete = 1155
case pressModifier = 1156
func play()
AudioservicesPlaySystemSound(self.rawValue)
找到合适的声音细节here also。
所以,将UIDevice.current.playInputClick()
替换为AudioServicesPlaySystemSound(systemSoundsID)
【讨论】:
非常感谢。这可行,但您还必须import AudioToolbox
。【参考方案2】:
为了完整性,使用接受的答案和原始问题:
import AudioToolbox
import UIKit
enum SystemSound: UInt32
case click = 1123
case delete = 1155
case modifier = 1156
func play()
AudioServicesPlaySystemSound(self.rawValue)
class CustomCell: UICollectionViewCell
private var isOn = true
@IBOutlet weak private var button: UIButton!
didSet
button.addTarget(self, action: #selector(self.toggleButton), for: .touchUpInside)
@objc private func toggleButton()
isOn = !isOn
let systemSound: SystemSound = (isOn) ? .click : .modifier
systemSound.play()
【讨论】:
以上是关于UICollectionViewCell 中的按钮在单击时发出键盘声音的主要内容,如果未能解决你的问题,请参考以下文章
UITableViewCell 中的 UICollectionViewCell 中的按钮点击操作
UICollectionViewCell 中的 Swift 3 按钮不响应触摸
为啥向 UICollectionViewCell 中的按钮添加操作效果不佳?
UICollectionViewCell 中的按钮在单击时发出键盘声音