2013-02-23 2 views

ответ

0

Как вы используете этот цикл:

while (_onButton.selected) { 

    [self vibrate]; 
    NSLog(@"working"); 
} 

Вы не позволяя runloop для обработки новых событий, и поэтому у кнопки никогда не будет возможности изменить состояние (так как оно не получит касаний от пользователя). Это очень плохо, и вы не должны этого делать.

Вместо этого продолжите свою вибрацию, используя метод делегата звука, который продолжается все время, когда кнопка выбрана (вы не показываете, как вы выполняете свою вибрацию, поэтому я не могу дать более подробную информацию здесь).

EDIT После комментария от OP:

- (void)vibrate 
{ 
    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 
} 

OK, AudioServices обеспечивает «процедуру завершения» через AudioServicesAddSystemSoundCompletion(), который позволит вам воспроизводить вибрации «звук» все время выбрана кнопка. Используйте этот механизм, а не цикл while.

+0

- (void) vibrate { AudioServicesPlaySystemSound (kSystemSoundID_Vibrate); } Это мой вибрирующий метод –

+0

На самом деле я хочу подождать между бесконечными циклами, так как я хочу, чтобы он вибрировал с интервалами, которые пользователь решает. У меня есть ползунок для этого, и я хочу вызвать вибрационный метод с такими интервалами. –

+0

@ArdaKeskiner. Затем вам нужно настроить таймер в процедуре завершения звука * и воспроизвести вибрационные звуки в методе * с таймером. – trojanfoe

0

Это бесконечный петлевой помощник. изменить время цикла, как это:

while (_onButton.selected) { 

[self vibrate]; 
NSLog(@"working"); 
_onButton.selected = NO; 
} 

или время (_onButton.selected) {

[self vibrate]; 
NSLog(@"working"); 
break; 
} 
+0

Тем не менее, я хочу, чтобы этот цикл продолжался до тех пор, пока я не остановлю кнопкой «ВЫКЛ» –

+0

Ну, вы не можете использовать infiniteloop в UIThread, потому что он собирается блокировать пользовательский интерфейс. Попробуйте запустить этот метод в другом потоке, используя '[self performSelectorInBackground: @selector (myMethod :) withObject: object];' –

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