日々精進

新しく学んだことを書き留めていきます

2012-05-01から1ヶ月間の記事一覧

iOSアプリでフレームワーククラスのメソッドをフックする方法

IT

Method Swizzlingとは「クラスのメソッドテーブルを書き換えることでセレクタ名のリネーミングを行なう技法」。 要はフレームワークのメソッドを自前のメソッドでオーバーライドする方法。 objective-cではカテゴリを使えばオーバーライドできそうだが、正し…

ポップオーバーが消えたらキーボードを引っ込める方法

IT

AppStoreの検索窓のように、テキストボックスにフォーカスが当たったらキーボードとポップオーバーを表示させて、 テキストボックス・ポップオーバー・キーボード以外の部分をタップしたらポップオーバーを消す方法。 ・ViewControllerに以下のアクションを…

node-inspectorを実行するとエラー

IT

node-inspectorを実行すると以下のエラーが出た。 Error raised: listen EADDRINUSE これはすでに他のプロセスで使用されているポートを使おうとしたら出るエラーらしい。 参考:http://stackoverflow.com/questions/9446708/getting-the-basic-socket-io-sa…

addSubViewするとViewのSizeが変わる

IT

IBでViewのSizeを可変にしていると、addSubViewで他のViewの子にしただけでSizeが変化するので注意。 どんな計算式でSizeを計算しているかは不明。。

初期化処理の途中でデバイスの向きを取得する方法

IT

デバイスの向きは普通以下のコードで取得できる。 UIInterfaceOrientation toInterfaceOrientation = [[UIDevice currentDevice] orientation]; が、AppDelegateのdidFinishLaunchingWithOptionsメソッドが終わる前に上記コードを実行するとデバイスの向きを…

デバイスの方向が変化しなくてもUIDeviceOrientationDidChangeNotificationが発生する

IT

デバイスの向きが変わったタイミングで処理を行う場合、RootViewController以外ではUIDeviceOrientationDidChangeNotificationイベントで処理する。 NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; [center addObserver:self select…

UITableViewの選択するセルをプログラムから操作するときの注意点

IT

プログラムから先頭のセルを選択したい、という場合、以下のようにする。 [self.currentTableViewController.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop]; [NSI…

AppCodeのコード補完を大文字小文字区別せず行う

IT

AppCodeいいですね。Xcodeよりよくできてると思うので最近AppCodeにIDEを乗り換えました。 AppCodeのコード補完はデフォルトでは大文字小文字を区別するのでそれを区別しないよう設定。 設定Windowの検索窓にcompletionと打てば設定画面にたどり着ける。設定…

ログに出した数値がおかしい

IT

デバッグしてると以下のように数値をログに出してみたいということがよくある。 NSLog(@"%d", self.tableView.contentOffset.y); さっきログに出ている数値がずっと0だけどそんなはずない。。。と悩んでいたら数値の型がfloatだったからだった。。 以下が正…

UITableViewの編集モード変更とリロードを同時にやるとアニメーションがキャンセルされる

IT

以下のようにself.tableView.editingの変更とreloadDataを同じイベント内で行うとアニメーションが行われなくなってしまう。 - (IBAction)editButtonTouch:(UIBarButtonItem *)sender { [self.tableView setEditing:!self.tableView.editing animated:YES]; …

UITableViewのセルをクリックしてもハイライトしないようにする

IT

UITableViewCellを以下のように設定すればいいだけ。 簡単ですな。 cell.selectionStyle = UITableViewCellSelectionStyleNone;

node開発Tips

IT

ソースコードを更新したら自動でリロードしてほしいが、それを実現するライブラリがnode-supervisor。 ファイルの更新を検知して勝手に読み込んでくれます。便利! 後はブラウザの更新さえ自動化出来れば画面で修正結果を確認するところまで全部自動化出来る…

謎のEXC_BAD_ACCESS

IT

EXC_BAD_ACCESSが出たけど、どの変数もZombieになってないしコンソールにもエラーの発生箇所が出てないしなんだこりゃと思ったら参照を渡さないといけない引数にprimitive型を渡していた。 - (IBAction)editButtonTouch:(UIBarButtonItem *)sender { [[NSNot…

複数のUITableViewのスクロールを同期させる

IT

UITableViewをスクロールさせるとscrollViewDidScrollメソッドが呼ばれるらしいのでこれを使う。 まずスクロールしたらイベントが発生するようにする。 -(void)scrollViewDidScroll:(UIScrollView *)scrollView { [[NSNotificationCenter defaultCenter] pos…

UITableViewの並べ替え用アイコンの位置を変える

IT

UITableViewの並べ替え用アイコン(ソフトバンクのロゴみたいやなつ)の位置を変えようとしたらえらい苦労した。 UITableViewのセルの並べ替え機能はUITableViewCellReorderControlに実装されているらしい。 が、UITableViewCell内にあるUITableViewCellReor…

SplitViewをSubViewとして表示する

IT

AppleのガイドラインにはSplitViewをRootViewにしないといけないと書いてある。 なのでUISplitViewControllerは他のViewのSubViewにするとうまく動かない。 これを解決する方法の一つはUIWindowを2つ作って、そのうち一つのRootViewをUISplitViewController…

UITableViewのDeleteボタン

IT

UITableViewのDeleteボタンを以下のようにする方法 ・Tableをスワイプした時にはDeleteボタンを出さない ・編集モード時(editing=YESのとき)はDeleteボタンを出す - (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView editingStyleForRow…

特定のViewの中だけジェスチャーを無効にする

IT

View1にジェスチャーを設定しているけど、View1の子ビューのView2の中ではジェスチャーを無効にしたいということがある。そういう場合は-gestureRecognizer:shouldReceiveTouch:を使うとよい。 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRec…

UITableViewで何もデータをセットしていないセルの値がおかしくなる

IT

UITableViewはセルを再利用しているので、「何もデータを表示しない」セルであってもセル内のラベルなどに初期値を代入しないと前回代入した値が残ってしまう。 下記のようにif (cell == nil)のelse句に初期化コードを書くべき。 - (UITableViewCell *)table…

dropboxをサーバで実行し続ける方法

IT

dropboxを使ってローカルで書いたコードをサーバにアップロードしているんだけど、コンソールでログインする度にdropboxを実行したくないのでサーバをログアウトしてもdropboxを実行し続ける方法を捜してみた。 http://d.hatena.ne.jp/ymotongpoo/20110330/1…

バックグラウンドスレッドでUITableViewを更新する

IT

重い検索処理をバックグラウンドスレッドで実行して、その結果をUITableViewに反映させようとしてはまった。 最初は以下のようにしていたが、これは間違い。 - (void)searchStocks:(id)param{ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; …

全角⇔半角、カタカナ⇔ひらがな変換

IT

CFStringTransformでできるらしい。 詳細は下記サイト参照。 http://d.hatena.ne.jp/alza/20120419/1334830039

ObjectiveーCで正規表現

IT

下記のようにやるらしい。後方参照とかどうやるんだろ。 NSString *string = @"1日3食のうち4食はうどんを食べたいと思っている。"; NSRange match = [string rangeOfString:@"[0-9]+食" options:NSRegularExpressionSearch]; if (match.location != NSNotFo…

ObjectiveーCで文字列検索

IT

http://qiita.com/items/2557 上記サイトによるとlikeのときは括ってはいけないと書いてあるが、やってみたらくくらないとエラーになった。 NSPredicate *predLike = [NSPredicate predicateWithFormat:@"name like[c] '%@'", name]; NSPredicate *predConta…

ビルトインオブジェクトの拡張

IT

ObjectiveーCではNSStringなどのビルトインオブジェクトにメソッドなどを追加できるということを今知った! これはWktkせざるを得ない。 いろいろメソッドを追加して便利にできそうだけど、注意しないと予期せぬ不具合が起こりそうなので慎重に。。 とりあえ…

segmented controlのmomentary

IT

どのボタンが選択されているかを表示する場合、momentaryプロパティを設定すればいいが、このプロパティの意味を逆にとらえていた。。 momentaryをNOにすると選択状態が表示される。 momentaryの意味は「一時的な」とかだからそこから考えたら確かにそうだよ…

親ビューからはみ出した子ビューでタッチイベントが拾えない

IT

つまみが二つあるスライダーを自作していて、つまみがやけにつかみづらいなーと思ったら、つまみが親ビューからほとんどはみ出しているためタッチイベントがほぼ拾えないことが原因だった。。 下記サイトを参考にカスタムUIWindowを作ってsendEventメソッド…

iPhone Returnキーを押したらキーボードを消す方法

IT

下記サイトを参考に実装しました。簡単♪ http://d.hatena.ne.jp/yuum3/20100202/1265079161

iPhone画面回転系イベントが呼ばれない

IT

willRotateToInterfaceOrientationとかがなぜか呼ばれないと思っていたら下記サイトによるとrootViewControllerのwillRotateToInterfaceOrientationしか呼ばれないらしい!なんでだよ・・・ http://www.iphonedevsdk.com/forum/iphone-sdk-development/3098-…

iPhoneの回転を検出する

IT

iPhoneの回転イベント発生時に何か処理をする方法を調べるとよくshouldAutorotateToInterfaceOrientationメソッドに処理を実装している例を見かけるがこれは間違いじゃないか? shouldAutorotateToInterfaceOrientationは画面の回転を許可するかどうかを示す…