2013年11月25日月曜日

Titanium mobile にてTableViewRowが右にずれる場合がある。ちなみiOS7だけ

CRM TOUCHはTitanium Mobileで開発しています。


基本はワンソースでiOSとAndroidで動かすってのを守っているのですが、結構な確立でiOS SDKが更新されたりすると、いろいろ地雷を踏む傾向にあります。

で、今回はというとiOS7向けに改修している最中に出くわしたこの現象。
Titaniium SDK 3.1.3GA。そしてiOS7(実機とシュミレーター)で再現。

折角なのでスクショとっておきました。
どんな感じかというと、まず、普通にTabelViewに対してRowがappendしてある状態。
このサンプルだと2行だけです。


そして、TabelViewを引っ張って(もしくは押し上げて)画面から手を離してもとにもどすとあら不思議。

先頭の行が勝手に右にずれます。5回やると3回ぐらいずれます。


このパターン、引っ張ったりしなくても初期表示の段階でずれている場合もあります。。。

Titanium Mobile でわりと苦労してきたのはAndroidでiOSは出来る子だと思っていただけにショックがでかいです、けどめげません。

classnameが悪さしてんのか?とかいろいろ調べてみましたが発生するTableと発生しないTableが存在したため違いを比較してなんとか原因がわかりました。
この現象、rowの挿入を1行ずつappendRow()している場合では発生し、table.setData()でまとめてセットしているものでは発生しません。

なんだそりゃ、、、
ただ、描画のパフォーマンスを考慮してまとめてセットした方が良いと昨今言われていますので、良いタイミングだったと前向きに考え一気に修正してしまいます。

ListViewが早く安定してくれるといいんだけど、いつになったら乗り換えられるのかしら。

CRM TOUCHのサイトはこちら
vTigerCRMの日本語の情報に関してはこちら