2015-10-10 2 views
0

До сегодняшнего дня я тестировал свои приложения в симуляторе. Впервые я протестировал проект на реальном iPhone. Я был неприятно удивлен, что каждый раз, когда я нажимаю кнопку, телефон вибрирует. Это не будет большой проблемой, за исключением того, что у моего конкретного приложения есть встроенная клавиатура, которая воспроизводит звуковой звук каждый раз, когда нажата клавиша (UIButton).Как отключить вибрацию UIButton

enter image description here

Сочетание звука вибрации плюс аудио звук очень отвлекает. Есть ли способ программно отключить вибрацию кнопки? Я не прошу how to disable all vibration для телефона, только кнопки, которые я выбираю. Единственный актуальный вопрос, который я мог найти, был как раз наоборот: Making the iPhone vibrate.

Мне не нужно оставлять это для пользователя, чтобы отключить вибрацию в настройках, не так ли?

Update 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. Я тестировал его на том же телефоне, который вибрирует в вышеупомянутом приложении. Когда я постучал по кнопке, вибрации не было, поэтому должно быть что-то в этом коде, вызывающем вибрацию. Но что это может быть?

+0

Могу ли я рекомендовать, если поведение вашего приложения, уложенного поверх стандартного/встроенного поведения устройства или ОС, раздражает, тогда лучше всего настроить то, что делает ваше приложение, вместо того, чтобы нарушать пользовательское устройство или ожидания ОС с идеей, что ваше приложение является особенным снежинком ... – nhgrif

+0

Эти звуки звучат как мудрые слова, насколько мне не нравится их слышать. Вы порекомендовали бы, чтобы я заменил UIButton на 'UILabel'? – Suragch

+1

Нет. Я имею в виду, если ваши кнопки не являются ярлыками? Я не испытал этой вибрации. Я не знаю, зависит ли это от конкретной ОС или от конкретного устройства.Но это ограничено клавиатурами, верно? – nhgrif

ответ

3

AudioServicesPlayAlertSound может вызвать вибрацию:

iPhone-воспроизводит указанный звук. Если пользователь настроил приложение «Настройки» для вибрации на кольце, также вызывает вибрацию.

Я хотел бы попробовать AudioServicesPlaySystemSound вместо:

Чтобы играть в короткий звуковой сигнал не используется в качестве предупреждения, используйте AudioServicesPlaySystemSound.

Смежные вопросы