在我的小應用程序中,用戶點擊「ON」按鈕,然後我調用一個while循環的方法,應該出現「OFF」按鈕,但是我的「OFF」按鈕不顯示向上。按鈕狀態不會在循環中改變
回答
當你使用這個循環:
while (_onButton.selected) {
[self vibrate];
NSLog(@"working");
}
你是不是允許runloop來處理新的事件,所以這個按鈕永遠不會有機會改變狀態(因爲它不會接收用戶的觸摸)。這很糟糕,你不應該這樣做。
改爲使用聲音代表方法繼續振動,該方法始終保持按鈕處於選定狀態(不顯示如何執行振動,因此我無法在此處提供更多細節)。
編輯從OP評論後:
- (void)vibrate
{
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
}
OK,AudioServices通過提供一個AudioServicesAddSystemSoundCompletion()
「完成程序」,這將讓你可以重播振動「聲音」所有的按鈕選擇時間。使用此機制而不是while
循環。
這是一個無限循環隊友。改變while循環是這樣的:
while (_onButton.selected) {
[self vibrate];
NSLog(@"working");
_onButton.selected = NO;
}
或 而(_onButton.selected){
[self vibrate];
NSLog(@"working");
break;
}
但是,我想要這個循環繼續,直到我停下來「關閉」按鈕 – 2013-02-23 10:30:15
那麼你不能在UIThread中使用infiniteloop,因爲它會阻止用戶界面。嘗試在另一個線程中使用'[self performSelectorInBackground:@selector(myMethod :) withObject:object]'運行此方法;' – 2013-02-23 10:43:26
- 1. do while循環下去,直到按鈕狀態已經改變
- 2. Android狀態按鈕在狀態按下時不會改變顏色
- 3. UITableView在編輯模式 - '編輯'按鈕不會改變狀態
- 4. 改變按鈕背景按下狀態
- 5. jQuery/Rails 3按鈕不會改變狀態
- 6. ASP.Net單選按鈕不會改變狀態
- 7. jQuery buttonset:攔截點擊以便按鈕不會改變狀態
- 8. 統一的JS單選按鈕不會改變狀態
- 9. 鍵,循環3狀態改變
- 10. jQuery UI:按鈕打開對話框/按鈕不會改變狀態
- 11. 在for循環中更改狀態
- 12. 循環按鈕和改變樣式
- 13. 按鈕動畫狀態改變
- 14. JavaScript的改變按鈕狀態
- 15. 的Android:按鈕狀態改變事件
- 16. 按鈕BackColor不會改變
- 17. Android:當按鈕狀態按下時按鈕填充改變
- 18. componentDidMount中的setState不會改變狀態
- 19. 更改按鈕狀態OnClick
- 20. 更改按鈕的狀態
- 21. 更改按鈕狀態(MVC)
- 22. 按鈕狀態更改
- 23. 2狀態WPF按鈕不變ImageSource
- 24. VHDL狀態機不循環
- 25. 在while循環之外更改條件變量的狀態for while while循環
- 26. textArea爲空時按鈕不會變爲禁用狀態
- 27. 索引循環不會改變
- 28. UIButton不會改變選定狀態
- 29. rails state_machine不會改變狀態
- 30. 無狀態調用EJB不會改變
- (void)vibrate {0} {0} {0} AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); }這是我的振動方法 – 2013-02-23 10:31:16
其實我想在無限循環之間等待,因爲我希望它以用戶決定的間隔振動。我有一個滑塊,我想調用振動方法與間隔 – 2013-02-23 10:34:18
@ArdaKeskiner然後,你需要設置一個計時器在*聲音完成程序*,並在*計時器發射方法*中播放振動聲音。 – trojanfoe 2013-02-23 10:35:11