ThumbFan Keyboard 1.0.1リリース。キーボードエクステンションの技術所感

ThumbFan Keyboard 1.0.1がリリースされました。

今回のアプリでの変更点を見ながら、iOSキーボードやiOS8開発の技術についてまとめておきたいと思います。

DSC_5654-2
関係ないですが、最近カメラとレンズを新しくして、夕日が綺麗だったので写真撮ってみました。

“ThumbFan Keyboard 1.0.1リリース。キーボードエクステンションの技術所感” の続きを読む

Text Kitを使用してUITextViewにリンクを埋め込んだりタブでカラムつけたりする方法

TweetOverview 2.0.2 がリリースされました。
iTunes の App Store で配信中の iPhone、iPod touch、iPad 用 TweetOverview ツイート俯瞰デスクサイドアプリ

TweetOverviewはiOS 7限定でアップデートしたのですが、iOS7限定にして、iOS7の最新機能を出来るだけ取り込むためにそうしました。その一つがTextKitです。「上を目指すプログラマーのためのiPhoneアプリ開発テクニック iOS 7編」を書きました[内容紹介あり] | Zero4Racer PRO Developer’s Blog こちらのリンクにもある、iOS7の解説本を書くためにいろいろテストをした機能を使って作成しています。

“Text Kitを使用してUITextViewにリンクを埋め込んだりタブでカラムつけたりする方法” の続きを読む

コードからUIWebViewをスクロールさせる方法

昔は難しかったのですが、iOS5から、UIWebViewがscrollViewをプロパティで持つようになったので簡単になった!オフセットしすぎると中身が見えなくなってしまうので、maxOffset以下にするのがポイント。
スクロールダウン(一度に画面の1/3)

float maxYOffset = self.webView.scrollView.contentSize.height - self.webView.scrollView.frame.size.height;
[wself.webView.scrollView setContentOffset:CGPointMake(self.webView.scrollView.contentOffset.x, MIN(self.webView.scrollView.contentOffset.y+self.webView.bounds.size.height/3.,maxYOffset)) animated:YES];

スクロールアップ
[wself.webView.scrollView setContentOffset:CGPointMake(self.webView.scrollView.contentOffset.x, MAX(self.webView.scrollView.contentOffset.y-self.webView.bounds.size.height/3.,0)) animated:YES];

このスクロールと、前の記事の編集中判定を使って、TweetOverviewでキーボードでスクロールダウン、スクロールアップ、cmd+wで詳細画面を閉じるというのを実装したのですが、外部キーボードと組み合わせると非常にいい感じです。審査して来週ぐらいにリリースされると思いますのでお楽しみに。

UIWebViewが編集中かを確かめる方法

UIWebViewが編集中かを確かめる方法がStackoverflowにもはっきりと分かりやすいのがなかったので備忘で書いておきます。UITextViewだと
[textView isFirstResponder]
で編集中か分かるのですが、UIWebViewの場合は、内部にある要素の一部が編集中になるため、webView自体のisFirstResponderはfalseが帰ってきます。
それで、再帰的に内部を確かめてどれか一つの要素が編集中かを確かめるメソッドがこちら。

使う時は、
if([webView isFirstResponderRecursive])
のように使うことが出来ます。

UIKit Dynamics を使用してViewを滑らかに移動する方法

TweetOverview 2.0.0 がリリースされました。
iTunes の App Store で配信中の iPhone、iPod touch、iPad 用 TweetOverview ツイート俯瞰デスクサイドアプリ

これまでのバージョンがiOS7でちょっと不具合があり、修正しようと思ったところ、ここもなおそう、あそこもなおそうとやっていたら、ほぼ書き直しになってしまいました。前バージョンではUITableViewを使用してスクロールしていたのですが、これがデータが多くなるとパフォーマンスも落ちますし、また検索ストリームにあまりにたくさんのツイートが入ってきた時に安定性が悪いという問題がなかなか解決しませんでした。
“UIKit Dynamics を使用してViewを滑らかに移動する方法” の続きを読む

iAd, AdMobを表示できるJTCAdBaseViewControllerをiOS6対応

tomohisa/JTCAdBaseViewController · GitHub
自作の広告表示ライブラリです。主な機能としては、

  • 上下自由に広告を配置
  • コンテンツViewControllerのサイズを、広告によって自動選択
  • BOOLプロパティで、広告のオンオフをアクティブに設定可能
  • Admob, iAdの優先順位(初期表示)を設定可能
  • AdMob, iAd表示エラーが出たらもう一方に切り替え可能
  • 回転にも対応

というものです。 “iAd, AdMobを表示できるJTCAdBaseViewControllerをiOS6対応” の続きを読む

[iOS6] AutoLayoutを使用すると、viewWillAppear: でframeが決定しないので注意

iOS6のサンプルプロジェクトを使ってて挙動が違ったのでメモ。iOS5までのAutoResizingの場合、viewDidLoad時は正しいサイズがかえってこないという現象がありました。viewDidLoad後に、ツールバーのサイズなどを含めてAutoResizingを行うためです。AutoLayoutの場合、viewWillAppear後に、viewの位置決定が行われるようです。
“[iOS6] AutoLayoutを使用すると、viewWillAppear: でframeが決定しないので注意” の続きを読む

UIWebView のJSから、ObjCネイティブの関数を呼び出す方法(Alertでドメイン名をださない方法)

基本的なことですが、UIWebViewからdelegateを使って機能を呼び出す簡単な方法があったので共有します。こちらのリンクからの情報です。
iphone – How to change a javascript alert box title into an UIWebView? – Stack Overflow
“UIWebView のJSから、ObjCネイティブの関数を呼び出す方法(Alertでドメイン名をださない方法)” の続きを読む

ImageIO を使って ALAsset の画像のサイズを高速に取得する

iOS 5.1 から、ALAssetRepresentation に dimension プロパティが追加されて、画像のサイズを取得できるようになりました。5.1以前の場合は、自分で画像を取得してサイズを取得する必要がありますが、ImageIOを使うと、画像をすべて読み込まずに取得できる方法があったので紹介します。
“ImageIO を使って ALAsset の画像のサイズを高速に取得する” の続きを読む

TWTweetComposeViewController で、テキストの選択位置を変更する方法

TWTweetComposeViewControllerで、Tweetを簡単に投稿することが出来ます。TWTweetComposeViewControllerには、初期のテキストを設定することが出来ますが、その場合、テキストの最後の部分にカーソルが置かれます。TweetOverviewでは、ハッシュタグを設定して投稿する機能があるのですが、デフォルトの機能ではハッシュタグの後に初期カーソルが置かれます。アプリのレビューで、”この機能の意味がありません。出来るだけ早く対応お願いします”とのレビューをいただきました。。。ちょっとやってみたら結構簡単に出来たので、紹介します。

TweetOverview レビュー
TweetOverview レビュー

“TWTweetComposeViewController で、テキストの選択位置を変更する方法” の続きを読む