2013-12-10 34 views
0

我有一個IBAction,它應該在激活時等待,直到點擊鼠標然後打印位置。我如何正確地做到這一點?我的嘗試:Objective-C:IBAction上的鼠標位置

BOOL finished = NO; 
while (!finished) { 
    if ([NSEvent pressedMouseButtons] == 1) { 
     finished = YES; 
     NSLog(@"%f | %f", [NSEvent mouseLocation].x, [NSEvent mouseLocation].y); 
    } 
} 

可以工作,但會顯示一個繁忙的鼠標指針。所以我想一定有更好的辦法。

回答

0

IBaction和Click事件都發生在主線程上。看起來你正在用IBAction中的while循環阻塞主線程,直到發生鼠標單擊爲止,這就像使主線程忙碌一樣。

您應該在輔助線程中運行此while循環,以便主線程在while循環檢查時不會釋放此循環。

+0

有沒有簡單的方法來實現我想要的?也許沒有一個while循環? – DaPhil