2016-10-11 8 views
0

私は単純な数学ベースのアプリケーションを作成しました。アプリはユーザーに6つの乗算表の質問をします。例えばCorrectIncorrect Q1 10×10 は、ユーザがアプリケーションのサイクルで答えをこの次Xcode Cocoa osx NSTextfieldクエリ

IBOutlet NSTextField *CorrectIncorrect; 

を用い アプリユーザの回答が正しいか間違っていたかどうかを表示し、ディスプレイに入射する(6の1の質問)が使用されています次の問題がユーザーにもたらされるように、コード

[CorrectIncorrect setStringValue:receivedAnswer]; 
[[CorrectIncorrect window] display]; 

のこのラインを使用して文字列「正しい」か「正しくない」を表示するには、その後、いずれかの文字列は、次のコードを使用してクリアされます。

[CorrectIncorrect setStringValue:@""]; 
[[CorrectIncorrect window] display]; 

は当初、各CorrectIncorrect文字列がに迅速にクリアされていたので、その答えが「正しい」か「正しくない」だった場合、ユーザーは見たことがありません。したがって、私はそれはXcodeの7.3.1では動作しません

- (void)TimeDelay 
{ 
    startInterval = [NSDate timeIntervalSinceReferenceDate]; 
    stopInterval = [NSDate timeIntervalSinceReferenceDate]; 
    while ((stopInterval - startInterval) <= 1) 
    { 

    stopInterval = [NSDate timeIntervalSinceReferenceDate]; 
    } 
} 

これはXcodeの5にうまく働いたの下cleared.seeた前に、ユーザーがディスプレイを見ることができるようにするために、プロセスを遅らせるために時間遅延法を使用しました。何かアドバイスをいただきました。

+0

'[[正しい修正]ウィンドウ]表示];は不要です。 – Willeke

答えて

0

いくつかのこと:

1)の時間間隔は秒であるので、<= 1は本当に多くの時間ではありません、あなたはその時間を増加し、それがどのように見えるかを見て試してみましたか?

2)「次の質問に行く」のようなボタンを追加することも検討してください。あなたはタイマー

3)あなたは、文字列をリセットするためにタイマーを持っているしたい場合は、あなただけのグランドセントラル派遣

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 10 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ 
    [CorrectIncorrect setStringValue:@""]; 
}); 

1っぽいラインを使用し、あるべきでに持っている必要はありませんその方法より直感的です

+0

3)グランドセントラルディスパッチなし:[CorrectIncorrect performSelector:@selector(setStringValue :) withObject:@ "" afterDelay:10.0]; ' – Willeke

+0

有用な提案とその解決策の両方に感謝します。すばらしいです! – Woollybaabaa

関連する問題