TiShadowを導入するも動作せず・・・

環境

npm -v
1.3.2
node -v
v0.10.13
titanium -v
3.1.2

TitaniumCLIの初期設定

titanium setup

TiShadowインストール

sudo npm install -g tishadow

2.1.1が入った

tishadow -v
2.1.1

TiShadowを起動

defaultはport3000みたいで
railsと被ったため3030に

tishadow server -p 3030

tishadowappを作成

mkdir ~/tishadowapp && tishadow app -d ~/tishadowapp

ビルド

Titanium StudioでいうInstall to IOS Deviceをやるみたい

cd ~/tishadowapp
titanium build -p iphone -T device -F universal

TiShadowで実行したいアプリのディレクトリに移動&実行

cd /hogeapp
tishadow run

としたけどうんともすんとも言わず・・・
調べたところ、こっちもportの指定が必要だったみたい

tishadow run -p 3030

これで一応起動はした
したけど・・・

undefinedエラーが発生

eval(ns)["create" + baseName](stlye)

とやらが動かないらしい
どっかで見たことあるな?と思って探したところ
alloy.jsのUI.createメソッドのところで見つけた

場所を見つけたところで・・・なんだけど
まあ、evalが実行出来てないって事かな

UI.createが動かないなんて事は無さそうだけど
どうにも手詰まりで今日のところはギブアップ

Titaniumでhiresなリモート画像をキャッシュするWidget作った

経緯

そもそもImageViewはリモート画像を自動でキャッシュしてくれるのだけど
hiresプロパティを設定した途端、うまくキャッシュ出来なくなってしまう

対策

一応キャッシュファイル自体は@2xな名前で作成してくれてる様なので
キャッシュファイルが存在する場合はそれを読み込む様にした

ついでに

プロフィール画像みたいな、普段はキャッシュしておきたいけど変更する時もある場合用に
キャッシュをクリアしたり、明示的にキャッシュするメソッドも追加した

github

そんなわけで
プロジェクト名はこんなんでいいのか
coffeeScriptのままでいいのか分からぬままgithubにあげてみた

https://github.com/ma2kubo/ma2.cachedImageView

iosでしか試してないのでiosのみの設定にしてあるけど androidでも使えるかも?(てきとー)

使い方

<Widget id="imageView" src="ma2.cachedImageView"></Widget>   
$.imageView.image = "http://hoge.com/hoge.png"

中身

こんな感じでapplyPropertiesしてるのでtssも反映されるはず

args = arguments[0] or {}
        
delete args.id
delete args.__parentSymbol

$.imageView.applyProperties args

同じくこんな感じにしたのでイベントも反映されるはず

exports.on = $.imageView.addEventListener
exports.off = $.imageView.removeEventListener 
ちなみにキャッシュの場所メモ
Ti.Filesystem.applicationDataDirectory + "../Library/Caches/"

TitaniumのTextFieldで日本語の変換がうまく出来ない

環境

  • TitaniumSDK 3.1.3
  • iOS SDK 7.0
  • 端末 シミュレーター iphone5

不具合

「あ」とか「い」とか1文字は入力できるけど
変換対象から外れてしまうので漢字や濁点が入力出来なくなった
TextAreaは問題なく入力出来る
シミュレーターの問題かと思ったけど実機でもダメだった

原因?

TableViewのRow内にTextFieldを配置するとおかしくなるみたい

<TableViewRow>
    <TextField id="q"></TextField>                          
</TableViewRow>

解決方法

TextFieldを直接配置したのがまずいのかな?と思って
とりあえずViewで囲ってみたら直った

<TableViewRow>
    <View>
        <TextField id="q"></TextField>                          
    </View>
</TableViewRow>

3.1.3のバグかな?仕様なのかな?良くわからないな

titleControlのボタンの背景色の変更が出来た?

f:id:ma2kubo:20121003215824p:plain

結局ボタンじゃ出来なかったんだけど

ButtonBarに変更してTi.UI.iPhone.SystemButtonStyle.BARを指定したらうまく出来た。

ボタン1個でButtonBarを使うのはどうかと思ったけどToolBar使うよりはだいぶまし。

titleControlのボタンの背景色が変更出来ない

navigationGroupのNavBarに3つボタンを置きたくて

titleControlにボタンとタイトルを配置しようかと試してるんだけど

ボタンの背景色が変更出来ない(・_・)

f:id:ma2kubo:20121003204902p:plain

 

leftNavButtonとかと同じ見た目にしたいだけなのに。

 

ToolBarを上に被せるって荒業しかないのかな。