До сегодняшнего дня я тестировал свои приложения в симуляторе. Впервые я протестировал проект на реальном iPhone. Я был неприятно удивлен, что каждый раз, когда я нажимаю кнопку, телефон вибрирует. Это не будет большой проблемой, за исключением того, что у моего конкретного приложения есть встроенная клавиатура, которая воспроизводит звуковой звук каждый раз, когда нажата клавиша (UIButton
).Как отключить вибрацию UIButton
Сочетание звука вибрации плюс аудио звук очень отвлекает. Есть ли способ программно отключить вибрацию кнопки? Я не прошу 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
. Я тестировал его на том же телефоне, который вибрирует в вышеупомянутом приложении. Когда я постучал по кнопке, вибрации не было, поэтому должно быть что-то в этом коде, вызывающем вибрацию. Но что это может быть?
Могу ли я рекомендовать, если поведение вашего приложения, уложенного поверх стандартного/встроенного поведения устройства или ОС, раздражает, тогда лучше всего настроить то, что делает ваше приложение, вместо того, чтобы нарушать пользовательское устройство или ожидания ОС с идеей, что ваше приложение является особенным снежинком ... – nhgrif
Эти звуки звучат как мудрые слова, насколько мне не нравится их слышать. Вы порекомендовали бы, чтобы я заменил UIButton на 'UILabel'? – Suragch
Нет. Я имею в виду, если ваши кнопки не являются ярлыками? Я не испытал этой вибрации. Я не знаю, зависит ли это от конкретной ОС или от конкретного устройства.Но это ограничено клавиатурами, верно? – nhgrif