最大の弱点の1つを克服しました。
私が作っているアプリは言わば、ボタン型ランチャーです。
所構わず、ボタンを碁盤の目の様に張り巡らせています。
そういう仕組みなので、スワイプと共存できないとずっと思っていたんですが、
考えてみれば、インターネットの閲覧で使うブラウザ、、
スマホで使用するブラウザは、リンク先の画像をタッチしても、
上下スクロールの最中では発動しません。
言わば、静止した状態で、真上からタッチする場合はリンク先に移動し、
上下に指を弾いている時に触ってもリンク先に移動することはありません。
スマホ自体の機能で、それは出来るおいうことを示しているのですが、
私はてっきり、専用のUIボタンを用意し、貼り付けないといけないと思っていました。
ーーー
調べてみると、、既存のボタンに機能を割り振って、供用出来ることが分かったのですが、
そこからが大変でした。
ネットなんて、正しい情報なんてありません。
偽情報、怪情報が溢れているんです。
ーーー
検索を掛けて一番上に表示された情報が正しいかと言うと、、
私の場合は、今回も参考程度にしかなりませんでした。
これが初心者であれば詰んでいた内容です。
ーーー
プログラムのソースデータが貼り付けてあったので、
それをコピーして実行したのですが、
エラーが30個ほど出ました。
そのエラーを1つ1つ開いて修復に掛けるのですが、
開発ツール側がサジを投げるエラーも混在している訳です。
ーーー
私も初めは、何とかそれを動かそうとしていたんですが、
諦めました。
そして、欲しい箇所のエラーを修正してそれを自分のアプリに取り込んだのですが、、
ーーー
スワイプの後に、押しボタンに割り振った動作が行われるんです。
その対応に1時間くらい時間を取られました。
結果は、理由は些細なことだったんですが、、
それに気付くまで時間が掛かりました。
ーーー
技の発動のタイミングが違うんです。
今まで使って来たボタンは、
.touchDown、、画面をタッチした時点で発動するボタンです。
スワイプは、、画面をタッチして指を動かして離すことで発動する訳です。
つまり、この設定ではスワイプをすると両方発動してしまうんです。
ーーー
これを.touchUpInsideに変更しました。
指を離した時点で発動する設定にしたところスワイプ動作が優先されるようになったんです。
これは私的には、私のアプリ的には物凄く革新的なことです。
ーーー
どんなにボタンを敷き詰めてもスワイプが使える訳です。
いつでも裏ページが使える訳です。
私は裏画面の読み出しを切り替え式にするつもりですが、
裏画面を左側に配置して指と連動して画面が表示される、
スワイプをきっかけにして、自動スクロールして画面が切り替わるでも良い訳です。
ーーー
私のアプリはユーテリティ系のアプリのので、
アプリのリフレッシュレートが0.2秒単位になっています。
画面をタッチされた時とかの、割り込みイベントが発生した時には、
リフレッシュレートに関係なく画面を描きまえますが、
アプリ本体の最小動作単位は0.2秒なんです。
ーーー
それで、ポップアップウィンドウの様に裏画面を表示できるのか?
まあ、とにかく、いざとなったら奥の手を使える訳です。
画面の広さの制限は取り敢えず無くなった訳です。
ーーー
まあ、現実には、網目上に配置したボタン全部にスワイプ処理を追加しないといけないので、それから、、スワイプ処理で一律同じ動作をする訳ではないので、
条件によって動作を分岐させないといけませんが、
出来ることに幅が出来た訳です。
ーーー
私としては、電卓みたいにボタンが配列されたアプリにスワイプする方が非常識と思うんですが、
それが出来ないことでお客さんがストレスを感じるのならば、対応せざるを得ません。
標準動作です。
私がわざわざ説明する必要は無い訳です。
説明じずらい、意図を理解してもらえない動作も、そこに組み込むことは可能です。
ーーー
はっきりいって面倒ですが、
それを行う価値があります。
ボタン型ランチャーのシステムで唯一出来なかった操作ができる様になる訳です。
5月まで頑張って休もうと思っていましたが、
今、中国で勢いに乗っているアプリです。
ーーー
そして恐らく、最初の数分で投げ出す人の不満点はスワイプ動作の筈です。
頑張ろうと思います。
そして頑張れます。
具体例を示さず、操作性が悪いと指摘されるよりはマシです。
ーーー
明確な不満点、問題点が見えている訳です。
既に明らかになっていることの対応なんて簡単です。
それは時間の問題です。
技術的な問題は今日、解決しました。
あとは、粛々と作業するだけです。