目玉の機能は、URLスキーム対応と起動時即編集になりますが、その他にも色々と改良が入っています。実装メモも付けたので参考なればと思います。
新機能および調整
・起動時即編集機能
・URLスキーム対応
・スワイプによるカーソル移動
・写真の最大枚数 30枚
・Evernoteに投稿した時の日時の変更
・下書き-ログ画面に「写真」ボタンを追加
・ひな形経由の下書きの保存ルール変更
・写真サイズ追加(320px)
・写真が1枚も無いときに写真タブを開くとカメラが起動することを止めた
・カメラの縦・横の切替時の操作感を調整
・タイトルのみで本文がない場合、投稿時に本文にタイトルを挿入
不具合修正
・下書きに一覧に表示されているサイズが実際よりも割増しで表示されている問題が解消しました
・デフォルトひな形利用時にノートブックが下書きに反映されない件が解消しました
・1件も下書きが無い状態で「下書き」タブをクリックするとクラッシュする件が解消しました
URLスキーム対応
単純起動に加え、初期の動作モードを指定することができます。
(1) 単純起動 jp.lakesoft.EverGear:// (2) ノート新規作成 jp.lakesoft.EverGear://draft/add 新規作成用パラメータ mode:0=テキスト入力 | 1=撮影モード | 2=カメラロール | 3=メモ入力 ※省略時は 0 指定と同じ text:テキストの初期値(要UTF-8によるURLエンコード)
例えば、下記で呼び出すと初期テキストが "Hello" で、撮影モードで起動します。
jp.lakesoft.EverGear://draft/add?mode=1&text=Hello
次バージョンではひな形(テンプレート)の指定も可能になる予定です。
実装メモ
EverGearのような複数のUIモードと複数のデータを扱うアプリの場合、テキスト入力モードやカメラ撮影モードで立ち上げようとすると状態の管理が必要になる(これは後述する「起動時即編集」も同じ)。例えば、テキスト編集中の状態で他アプリから URLスキームを呼び出されたらどうするか?あるいは撮影中の場合は。EverGearでは、一旦現在編集中のデータをすべて保存した後、開いていたテキスト編集画面(モーダル)を閉じ、ホーム画面へ一旦戻る。その後、URLスキームの指示に従った画面を開き直している。またURLスキームから呼び出された場合ユーザはアニメーションは期待していないはずだから、画面の開閉メソッドにはすべてアニメーションON/OFFの引数を追加し、これで制御するようにしてある。
起動時即編集
「設定」で「起動時即編集」をオンにすると、アプリがアクティブになる毎に新規入力モードで立ち上がります。前回起動時に下書きを開いていた場合はそのノートの編集モードで立ち上がります。
実装メモ
EverGear はUIに階層/状態がある。例えばテキスト入力中だと、入力画面のViewControllerがモーダル表示され、かつキーボードが表示されている。他には削除確認のアクションシートが出ていたり、撮影用のビューが出ているなど。この為一旦開いていた画面やモーダルな表示を閉じて、その上で目的の画面を改めて開く必要がある。そんなわけで見た目は大した機能ではないが、裏側の実装はここが面倒だった。またアプリがアクティブになったタイミングで以前の画面を閉じていたのではタイムラグが生じることがわかった。そこで発想を変えて非アクティブになるタイミングで開いていた画面やモーダル表示を閉じるようにした。さらにこの過程でのアニメーションは不要なので、既存のメソッドにすべてアニメーションON/OFFの引数を追加して制御するようにした。これによって前回の状態にかかわらず、アプリをアクティブにすると一瞬で編集モードとして立ち上がるようにすることができた。
なお起動時即編集がやっていることは URLスキームの処理と変らないので実はこの機能は URLスキームの処理を内部的に使っている。つまりアクティブ時のイベント処理無いで下書き新規作成用のURLスキームを作成して、その処理へ回している。
FaceBookで最新情報を提供しています。
EverGearサポートページ
@evergear
Responses
Leave a Response