如何禁用UIButton振动

时间:2015-10-10 13:16:33

标签: ios uibutton iphone-vibrate

直到今天,我一直在模拟器中测试我的应用程序。我第一次在真正的iPhone上测试了一个项目。每次按下按钮,手机都会振动,我感到非常惊讶。这不是什么大问题,除了我的特定应用程序有一个内置键盘,每按一次键(UIButton)就会播放音频声音。

enter image description here

振动声音和音频声音的结合非常令人分心。 有没有办法以编程方式禁用按钮振动?我没有问how to disable all vibration手机,只是我选择的按钮。我能找到的唯一相关问题恰恰相反:Making the iPhone vibrate

我不必让用户在设置中关闭振动,是吗?

更新1:

从评论来看,也许这可能是设备特定的问题,或者我以某种方式引发振动。

这就是我播放声音的方式:

import Foundation
import AudioToolbox

class Player {

    private let audioFolder = "raw"

    func playSoundFromFile(file: String) {
        var soundURL: NSURL?
        var soundID: SystemSoundID = 0
        let filePath = NSBundle.mainBundle().pathForResource("\(audioFolder)/\(file)", ofType: "mp3")
        soundURL = NSURL(fileURLWithPath: filePath!)
        if let url = soundURL {
            AudioServicesCreateSystemSoundID(url, &soundID)
            AudioServicesPlayAlertSound(soundID)
        }
    }
}

这是我的按钮操作:

@IBAction func keyTapped(sender: UIButton) {

    let buttonText = sender.titleLabel?.text ?? ""

    updateDisplayForIpa(buttonText)

    // play sound
    if let fileName = singleSound.fileNameForIpa(buttonText) { // converts IPA sound symbol into a filename 
        player.playSoundFromFile(fileName)
    }

}

由于点击调用更新显示方法,因此这是:

func updateDisplayForIpa(ipa: String) {

    if let fileName = singleSound.fileNameForIpa(ipa) {

        ipaLabel.text = ipa // UILabel
        ipaDescription.text = "\(fileName)_description".localized // UITextView
        ipaDescription.scrollRangeToVisible(NSRange(location: 0, length: 0))
        example1.setTitle("\(fileName)_example1".localized, forState: UIControlState.Normal) // UIButton
        example2.setTitle("\(fileName)_example2".localized, forState: UIControlState.Normal) // UIButton
        example3.setTitle("\(fileName)_example3".localized, forState: UIControlState.Normal) // UIButton

    }
}

我在这里看不到会引发振动的任何事情......

更新2

我创建了一个新项目,并在故事板中添加了一个UIButton。我在上面的应用程序振动的同一部手机上测试了它。当我点击按钮时没有振动,因此上面的代码必须有一些触发振动的东西。但它可能是什么?

1 个答案:

答案 0 :(得分:3)

AudioServicesPlayAlertSound会导致振动:

  

iPhone播放指定的声音。如果用户已将“设置”应用程序配置为振铃,则也会调用振动。

我试着改为AudioServicesPlaySystemSound

  

要播放未用作提醒的短音,请使用AudioServicesPlaySystemSound