測定終了時の画面をスクショするため、時刻を停止させたい
- 評価
- クリップ 0
- VIEW 885
iPhone, iOS9, xcode7, objective-c, の初心者です。
加速度センサーを用いて、人体背部の傾斜を計測しています。
時刻の開始は、
- (void)viewDidLoad
{ [NSTimer
scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(update)
userInfo:nil
repeats:YES];
[super viewDidLoad];
[self startAnimation];
// 中略
]
画面の日付と時刻は、常時、秒を刻んでいます。
[start] ボタンを押して、前屈した人体背部をなぞり、[stop]を押します。
[stop]内で、下図が出た時点のスクショをしたいのですが、この時、時刻表示を一時的に止めたいのです。
後の解析のため、この計測時の時刻を専用用紙に書き写してもいます。(個体を同定するため)
また、次の被検者の測定のため [start]ボタンをおしたら、通常の時刻表示(時分秒:最初と同じ状態)に戻したいです。
どなたか、よいアイデアありましたら、ご教示、宜しくお願い致します。
- (void)update {
NSDate *now =[NSDate date];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy/MM/dd HH:mm:ss"];
self.Time_Label.text = [df stringFromDate:now];
[df setDateFormat:@"ss"];
s = [[df stringFromDate:now] intValue];
[df setDateFormat:@"mm"];
m = [[df stringFromDate:now] intValue];
[df setDateFormat:@"HH"];
}
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
どうやってタイマーを起動しているか追記いただいたので、その停止方法をアドバイスします。
まず、ViewController内にNSTimerを保持できるプロパティかインスタンス変数を作成します。
// インスタンス変数の作成例
@implementation ViewController {
NSTimer *_timer;
}
タイマー起動時は、起動したタイマーをその変数に格納します。
// タイマー起動処理
_timer = [NSTimer
scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(update)
userInfo:nil
repeats:YES];
stopボタンを押したタイミングで、起動したタイマーに対してinvalidateメソッドを実行するとタイマーを停止/削除できるので、
これで現在時刻の表示を一時停止できます。
// stopボタンを押した時のタイマー停止処理
[_timer invalidate];
_timer = nil;
「[start]ボタンをおしたら、通常の時刻表示(時分秒:最初と同じ状態)に戻したい」というのが、一時停止中の現在時刻表示を再開始したいという意味であれば、startボタンを押したタイミングでまたタイマーを起動させればよいです。
その際、最初はviewDidLoadで起動するつもりなのであれば、startボタンを押した時にタイマー二重起動にならないよう、_timerがnilか確認してから起動する必要があります。
// startボタンを押した時のタイマー開始処理
if (_timer == nil) {
_timer = [NSTimer
scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(update)
userInfo:nil
repeats:YES];
}
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.37%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
TakeOne
2016/05/24 20:30 編集
「時計が止まりません」と言われても、どうやってタイマーを起動して時計を表示しているのかの説明やコードもないのに、止め方についてアドバイスしようがありません。「[start]ボタンをおしたら、通常の時刻表示に戻したいです」というのも、「通常の」時刻表示というのとstartボタンを押す前の「通常でない」時刻表示というのが、それぞれどういうものか(どう違うのか)説明しないと何がしたいのかわかりません。