如何在iOS上设置两个打开/关闭振动的按钮?

如何在iOS上设置两个打开/关闭振动的按钮?,ios,vibration,Ios,Vibration,如何在iOS上设置两个打开/关闭振动的按钮 这就是我想做的: @property (nonatomic) BOOL vibeIsOn; - (IBAction)startVibrating:(id)sender { dispatch_queue_t vibeQueue = dispatch_queue_create("vibe", NULL); dispatch_sync(vibeQueue, ^{ for (;!self.vibeIsOn;) { Audio

如何在iOS上设置两个打开/关闭振动的按钮

这就是我想做的:

@property (nonatomic) BOOL vibeIsOn;

- (IBAction)startVibrating:(id)sender {
dispatch_queue_t vibeQueue = dispatch_queue_create("vibe", NULL);
dispatch_sync(vibeQueue, ^{

    for (;!self.vibeIsOn;)
    {
        AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

    }
});
dispatch_release(vibeQueue);}

- (IBAction)stopVibrating:(id)sender {
self.vibeIsOn = YES;
AudioServicesRemoveSystemSoundCompletion(kSystemSoundID_Vibrate);}
不幸的是,当我按下启动振动按钮时,它无法跳出for循环,但我确实将for循环放入了线程中,对吗


救命啊!!!这段代码有什么问题吗?

您同步地调度队列,因此调用线程将等待执行完成,而这永远不会发生,因为for循环从未停止。改为使用dispatch\u async。

同步地调度队列,因此调用线程将等待直到执行完成,而这永远不会发生,因为for循环从未停止。改用dispatch\u async。

什么调用停止振动?名为startVibrating?stopVibrating和startVibrating的同一个按钮都是视图上的按钮。什么叫stopVibrating?名为startVibrating?stopVibrating和startVibrating的同一按钮都是屏幕上的按钮view@JerryZhu在这种情况下,您应该勾选答案旁边的灰色复选标记,将其视为正确答案。如果在设置中关闭振动,该选项是否有效iPhone@madLokesh在我的情况下,即使iPhone关闭了振动我之前没有使用调度队列,现在我添加了dispatch_队列,但我仍然面临相同的问题issue@JerryZhu在这种情况下,您应该勾选答案旁边的灰色复选标记,将其视为正确答案。如果在设置中关闭振动,该选项是否有效iPhone@madLokesh在我的情况下,即使iPhone关闭了振动,它也能正常工作。我没有使用dispatch_队列早些时候,我添加了dispatch_queue,但我仍然面临同样的问题