В моем маленьком приложении пользователь нажимает кнопку «ON», затем я вызываю метод с циклом while и появляется кнопка «OFF», однако моя кнопка «OFF» не показывает вверх.Статус кнопки не изменяется в цикле
ответ
Как вы используете этот цикл:
while (_onButton.selected) {
[self vibrate];
NSLog(@"working");
}
Вы не позволяя runloop для обработки новых событий, и поэтому у кнопки никогда не будет возможности изменить состояние (так как оно не получит касаний от пользователя). Это очень плохо, и вы не должны этого делать.
Вместо этого продолжите свою вибрацию, используя метод делегата звука, который продолжается все время, когда кнопка выбрана (вы не показываете, как вы выполняете свою вибрацию, поэтому я не могу дать более подробную информацию здесь).
EDIT После комментария от OP:
- (void)vibrate
{
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
}
OK, AudioServices обеспечивает «процедуру завершения» через AudioServicesAddSystemSoundCompletion()
, который позволит вам воспроизводить вибрации «звук» все время выбрана кнопка. Используйте этот механизм, а не цикл while
.
Это бесконечный петлевой помощник. изменить время цикла, как это:
while (_onButton.selected) {
[self vibrate];
NSLog(@"working");
_onButton.selected = NO;
}
или время (_onButton.selected) {
[self vibrate];
NSLog(@"working");
break;
}
Тем не менее, я хочу, чтобы этот цикл продолжался до тех пор, пока я не остановлю кнопкой «ВЫКЛ» –
Ну, вы не можете использовать infiniteloop в UIThread, потому что он собирается блокировать пользовательский интерфейс. Попробуйте запустить этот метод в другом потоке, используя '[self performSelectorInBackground: @selector (myMethod :) withObject: object];' –
- 1. Label.Text не изменяется в цикле
- 2. Размер кнопки релятивирования не изменяется для значений в цикле for
- 3. Статус достижимости AFNetworking не изменяется
- 4. Целочисленное значение не изменяется в цикле while
- 5. Переменная в цикле на Python не изменяется
- 6. Почему статус учетной записи пользователя не изменяется
- 7. Содержимое кнопки не изменяется в реальном времени
- 8. Почему фон Button не изменяется, когда я устанавливаю его статус?
- 9. функция .Кнопки в цикле
- 10. Где этот счетчик ListBox изменяется в цикле?
- 11. libGDX, Scene2d Статус кнопки
- 12. Изменить статус кнопки (MVC)
- 13. cast.Api.addReceiverListener() обратный вызов, когда статус устройства изменяется
- 14. Состояние флажка не изменяется после нажатия кнопки
- 15. При нажатии кнопки содержимое не изменяется. - Android
- 16. Facebook login Текст кнопки не изменяется
- 17. Javascript не обрабатывает кнопки в цикле отдельно
- 18. setCloseButtonIcon() не изменяется по умолчанию кнопки Закрыть
- 19. Почему активность не изменяется при нажатии кнопки?
- 20. (ViewPagerIndicator) Фрагмент не изменяется при нажатии кнопки
- 21. прозрачность кнопки не изменяется с помощью 'setAlpha'
- 22. Верхняя граница цикла FOR не изменяется в цикле, почему?
- 23. Значение целого числа в цикле не изменяется Андроид
- 24. Переменная String в вложенном цикле цикла не изменяется
- 25. Worker Thread не обновлял статус видимости кнопки
- 26. супервизор скрипт python: статус выхода 1; не ожидается в цикле
- 27. Статус просмотра приложения (всегда «Ожидание загрузки») не изменяется
- 28. paypal и virtuemart: статус заказа не изменяется после совершения платежа
- 29. Как изменить статус кнопки переключения?
- 30. Я не в состоянии изменить статус кнопки через JQuery
- (void) vibrate { AudioServicesPlaySystemSound (kSystemSoundID_Vibrate); } Это мой вибрирующий метод –
На самом деле я хочу подождать между бесконечными циклами, так как я хочу, чтобы он вибрировал с интервалами, которые пользователь решает. У меня есть ползунок для этого, и я хочу вызвать вибрационный метод с такими интервалами. –
@ArdaKeskiner. Затем вам нужно настроить таймер в процедуре завершения звука * и воспроизвести вибрационные звуки в методе * с таймером. – trojanfoe