ボタン以外(UILabelとか)をタップしたいなら透明ボタンがいいかも
iOS開発でボタン以外の要素をタップさせたくなることがたまにあるかもしれない。例えばラベルとか画像とかね。 そういった場合によく取られる方法はもしかしたらtouchesBeganやtouchesEndedのイベントを使うことかもしれない。けれど、タッチ系のイベントで自分で何とかしようとするとタップしたあと領域外で離したときとかその逆の動きとかで微妙に挙動がうまくいかないので操作感も悪くなってしまう …
iOS開発でボタン以外の要素をタップさせたくなることがたまにあるかもしれない。例えばラベルとか画像とかね。 そういった場合によく取られる方法はもしかしたらtouchesBeganやtouchesEndedのイベントを使うことかもしれない。けれど、タッチ系のイベントで自分で何とかしようとするとタップしたあと領域外で離したときとかその逆の動きとかで微妙に挙動がうまくいかないので操作感も悪くなってしまう …
コールバック的に呼びたい処理をブロックプロパティにして使う方法。 ヘッダー typedef void (^Handler)(void); @interface MyViewController : UIViewController @property (nonatomic, copy) Handler handler; - (IBAction)buttonTapped:(id)sender; …
前にObjective-C向けのを見つけてこんなのを書いた。 Underscore.js風Objective-Cライブラリ「_.m」 - ぴよログ Swiftにも早速似たようなのが出てきたようだ。 Dollar.$wift by ankurp サンプルで比較 例としてfindのサンプルを。 Swift $.find([1, 2, 3, 4, 5, 6], iterator: { $0 == 2 …
iOSには動画再生用にMPMovierPlayerViewControllerっていうクラスがあって、URLを渡して表示するだけでめちゃくちゃ簡単に動画再生機能を実装できる。すごく便利。 その分自由度が低くてちょっとした挙動を変えるのが大変だったりする。
このあたりの処理はやり方がコロコロ変わるようなので検索しても情報が古くて困る。2014/06/07時点、Xcode5.1.1、iOS7.1 SDK時点での情報を書いておく。 正解はステータスバーを表示したくないViewControllerでprefersStatusBarHiddenをオーバーライドする。
Swiftは出たけどまだまだObjective-Cはオワコンってことにはならないと思うからObjective-Cの話を。 Objective-Cで非同期処理をしてその結果を受けてなんかしたい、ってときが結構あるんだけど待ち方がいまいちよくわからなかったことがあった。今思えば基本的なやり方だけどちゃんと残しておこう。
SwiftとObjective-Cは相互に呼び合えるらしい。Objective-CからSwiftはすでに記事があった。 SwiftのコードをObjective-Cから呼んでみた - Qiita もしSwiftからObjective-Cのコードを呼べるのであれば、大抵のCocoaPodsライブラリは使い回せることになるので開発者としては大変嬉しい。せっかくなので検証にもCocoaPodsで入れたライ …
Objective-Cではカテゴリを使って既存のクラスに新しいメソッドを追加したかのように振る舞わせることができる。 では、カテゴリで新しいメソッドではなく、既存の(というかオーバーライドして使うようなもの)を定義するとどういう挙動になるのか。気になって調べてみた。
Objective-Cではカテゴリを使って既存のクラスを拡張してメソッドを追加できるが、メソッドだけでなくプロパティを追加することもできる。 例えばこんな風にUIViewのカテゴリを新規作成し、ヘッダーにプロパティを定義する。今回はNSStringにした。
Xcode標準のテストライブラリがうまいことやってくれないせいで、非同期処理のテストを書く場合に待ちの処理を自分で書いてあげないといけません。 最近のすごくいい感じの拡張が紹介されたのでこれを使うとなかなかいい感じです。