ページ 11

iphoneアプリ-署名認証システム-

Posted: 2013年9月09日(月) 15:34
by iphnekunn
 はじめまして。
 自分はiphoneアプリで最終的に、署名認証システムを作ろうとしているんですが、、現在第一段階として、一画における筆記時間(iPhone上での一画のタップ時間保持)と総画数(総画数を保持)をデータとして保持するということをしたいとおもっているのですが、アプリ開発初心者でなかなか方針が立ちません。
 自分の考えとしては、iPhone上でのタップに関してはタッチメソッド(touchesBeganなど)を用いてできると思うんですが、そこにおいてのタップ時間保持という点でどのようにプログラム記述すればいいのか方針が立ちません。(NSUserDefaultを使う?)
 プログラミング、iPhoneアプリ開発に詳しい方、できればお力借りられないかと思いましてこちらに書かせてもらいました。  よろしくお願いします。
 

Re: iphoneアプリ-署名認証システム-

Posted: 2013年9月11日(水) 01:46
by しひ
読む限りNSUserDefaultなどを使わず、普通にインスタンス変数として持てばいいように思うのですが、
それでは何か不都合があるのでしょうか?

Re: iphoneアプリ-署名認証システム-

Posted: 2013年9月11日(水) 17:48
by iphonekunn
ご返信ありがとうございます。 総画数保持に関しては、NSMutableArrayを使い、配列のサイズをcountすることで解決いたしました!

問題が一画のタップ間秒数保持なんですが、現在touchesBeganメッソド、touchesMovedメッソド,touchesEndedメソッド、drawLineメソッドで線を書くという段階まできてるんですが、touchesBeganからtouchesMovedを経てtouchesEndedまでの秒数をカウントするというところでつまずいております。 NSDateを使おうとしてやっているんですがうまく行きません。
アドバイスもらえますでしょうか? よろしくお願いします。

Re: iphoneアプリ-署名認証システム-

Posted: 2013年9月11日(水) 19:40
by iphonekunn
もう一つ質問です。

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event メソッドが呼び出されたときにタイマー(時間計測)を開始し- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event の時にタイマーをストップというように考えているんですが、このような場合は 時間を計測するメソッドをまず作ってから、- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 内で呼び出すというようにしなければ行けないのでしょうか?

よろしくお願いします。

Re: iphoneアプリ-署名認証システム-

Posted: 2013年9月12日(木) 00:56
by しひ
一つ目、単純に時間のカウントがしたいのであれば、timeIntervalSinceDate:メソッドがあります。

コード:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    self.startDate = [NSDate date]; // タッチの開始時刻を保持
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    const NSTimeInterval interval = [[NSDate date] timeIntervalSinceDate:self.startDate]; // タッチの終了時刻との差を求める
    NSLog(@"%f", interval); // タッチしていた秒数を表示
}
二つ目、しなければならないということはありませんが、何とも言えません。
上のコードのように処理を行うのであれば、必要ないように思います。

Re: iphoneアプリ-署名認証システム-

Posted: 2013年9月13日(金) 13:53
by iphonekunn
ありがとうございます! 無事に総画数、タッチ時間を配列に格納することができました。

次の段階として、他の画面においてまた同じようにタッチした場合に、先ほど格納した総画数、タッチ時間もその画面で参照したいのですがその場合は先ほど格納したものをNSUserDefaultで一度保存しなければいけないのでしょうか?

配列はNSmutableArrayだったのでNSArray型に変換してNSUserDefaultに格納しようとしているのですが。。。

他に配列を保存して他の画面で参照する方法はありますか?

よろしくお願いします!

Re: iphoneアプリ-署名認証システム-

Posted: 2013年9月14日(土) 17:31
by しひ
NSUserDefaultsは、基本的に設定情報などアプリを終了した後も残しておきたいデータを保存するのに使います。
禁止とまでは言いませんが、それ以外の用途での使用は避けたほうがよいのではないでしょうか。

他の画面で参照する方法ですが、例えば画面を生成するとき引数やプロパティに渡すのはいかがでしょう。

Re: iphoneアプリ-署名認証システム-

Posted: 2013年9月14日(土) 17:54
by iphonekunn
返信ありがとうございます。 

署名認証アプリを想定しているので、署名を登録した際の総画数、タップ時間はアプリ終了後も保存し、再度起動した際には他の画面において(登録した署名と照合する画面)も使いたいため、NSUserDefaultを使用しおうと思いました。 上記のような場合であればNSUserDefaultでよろしいでしょうか?

また、NSUserDefaulで保存したもの(画数、タップ時間)は他の画面(他のクラス)でも参照できるのでしょうか?

よろしくお願いします。

Re: iphoneアプリ-署名認証システム-

Posted: 2013年9月14日(土) 18:13
by しひ
他の画面とはそういう意味だったのですね。それなら良いと思います。
NSUserDefaulsに保存した値は、どのクラスからも参照することができます。

Re: iphoneアプリ-署名認証システム-

Posted: 2013年9月15日(日) 20:31
by iphonekunn
お返事ありがとうございます。

無事にデータを保存することができました。

登録画面と照合画面において,
画数とタップ時間をそれぞれの配列(NSArray)に保存することはできたのですが、登録画面でのタップ時間と照合画面でのタップ時間の差分を画面3において取りたいのですが、 NSArrayどうしの差分を取る場合、 

NSArry1-NSArray2 で実行したのですができませんでした。 一度NSMutableArrayに変換してから差分を取ってみてもエラーになってしまいます。  何か方法はありますでしょうか?
  

よろしくお願いしたいです。

Re: iphoneアプリ-署名認証システム-

Posted: 2013年9月16日(月) 00:13
by しひ
計測した値はそのままNSArrayなどに入れることができないので、何らかのオブジェクトに格納していると思います。
オブジェクト同士の四則演算というのもできないので、計算するためにはそのオブジェクトから値を取り出す必要があります。

Re: iphoneアプリ-署名認証システム-

Posted: 2013年10月13日(日) 23:16
by iphonekunn
返信がとても遅れて申し訳ありません。

ありがとうございました!