iOS simulatorでキーボードが表示されなくなった


xcode 6.0.1 にアップデートしてしばらく開発を続けていたところ、iphoneシミュレータでtextViewをクリックしたときに、キーボードが表示されなくなっていることに気付きました。
キーボード関連のコードは最近書き換えていなかったし、さらにiPad2のシミュレータの方では正常にキーボードが表示されるという状態でますます意味が分かりません。

そこで検索してみると以下のドンピシャの答えが見つかりました。
iphone – Swift Xcode 6: keyboard not showing up in ios simulator – Stack Overflow
要約すると

Q. シミュレータでUITextViewをクリックしてもキーボードが表示されなくなりました。昔は動いていたのに。。。
A. 解決法は以下
1. iOS Simulator -> Hardware -> Keyboard
2. [Connect Hardware Keyboard]のチェックをはずします

ishot141006-2

こんな設定があったんだなぁ。


google maps SDK for iOS 1.8.1を使ってみる


google mapのSDKの1.8.1が出ているらしい。3ヶ月も前だけども。
1.8.1を使ってみる前に、今まで使っていたのは1.6.2だったので、それ以降のバージョンのrelease noteを読んでみた。

Google Maps SDK for iOS — Google Developers
結構変わってるっぽい
以下、ざっと日本語にしてみたもの。間違っていたらごめんなさい。Version1.7.1のところなんかは全然意味が分からないです。。。
詳細はオリジナルを見て下さい。
続きを読む


iOS用 google mapでマーカーをタップせずにinfo windowsを出す


地図系アプリを作成中。
マーカーを好きな位置に出すことはできますが、info windowは出せないのかな?と調べたらあっさり解決法が見つかりました。

How to show a Info window in iOS Google maps without tapping on Marker? – Stack Overflow

GMSMarker *marker = [[GMSMarker alloc] init];
marker.position = coordinate;
marker.title = @”Location selected”;
marker.snippet = @”Testing”;
marker.map = mapView_;

//Show info window on map
[mapView_ setSelectedMarker:marker];

こんな風に、 setSelectedMarker でマーカーを選択してやればinfo windowが開きます。
当然かもしれませんが、複数のinfo windowを同時に出すことはできないようです。

ウインドウを複数出したいようなときは、UIViewで自作するしかないですかね。


Xcodeでsub projectを追加するときの注意


SQLCipherというものを利用して、SQLiteを使ってデータを保存し、そのデータを暗号化しようとしている。

まず、こちらのサイトを参考にしながらサンプルアプリを作った。
chrooot: SQLCipherを使用してデータベースを暗号化する。(iOS)
乙寺備忘録 [iPhone]sqlcipherを利用する。(その2)

ここまでは上手くいっていたのだが、次に作成中のアプリにこの機能を組み込もうとしたときにトラブったのでメモ。

SQLCipherとopenSSLのライブラリを自分でbuildしなければならないので、自分のプロジェクトにSQLCipherとopenSSLのプロジェクトを組み込まなければならない。
そのために「Add Files to “自分のプロジェクト”」でサブプロジェクトとして登録するのだが、Addする際に「Destination: Copy items into destination group’s folder (if needed)」のチェックとしてもしなくても、コピーされなくて参照になるようだ。

私の場合、SQLCipherとopenSSLをサブプロジェクトに登録しても、なにやらプロジェクトとして認識されていないような状態になった。
サブプロジェクトのsqlcipher.xcodeprojをクリックしてもプロジェクトの情報が表示されないのだ。
それであれこれ操作を試していると、どうやらテスト用のサンプルアプリの方でSQLCipherのプロジェクトファイルを開いたままになっているので、他のアプリで開けない状態であることが分かった。両方から参照されている状態になっているらしい。
そこでサンプルアプリの方を閉じると正常に認識された。

結論
何かをサブプロジェクトとして登録するときには、そのプロジェクトファイルを他のアプリで開いていないことを確認しよう。


[アプリ]バナナコレクション


iTunesArtwork

落ちてくるバナナを集めよう。
大きく得点に影響する様々な効果のアイテムも落ちてくる。
高得点や集めたバナナの本数で特典(ギフト)をゲットして、ゲームを有利に進めよう。

- 赤いやつには気をつけて。
- 赤いやつや黒焦げバナナを好きになるアイテムもあるよ。
- ギフトで追加される珍しいバナナは高得点。見つけたら絶対に取ろう。

sc1
sc2
sc3
sc4

ライセンス関係

このアプリには以下のサイトの画像、音楽等を利用させて頂きました。
ありがとうございました。

画像等

Photoshop backgrounds, textures and icons | PSDGraphics
freepik
freepik
freepik
freepik
Bell Sound Effects – Wav Mp3 Download
Free Vector Background Download
Free Photo: Earth, Blue Planet, Globe, Planet – Free Image on Pixabay – 11015

音楽等

フリーBGM・音楽素材 MusMus
音楽素材/魔王魂


Localizable.stringsに全角空白を入れないよう注意


Localizable.strings (japanese)を編集していて、次のようなエラーに遭遇した。

Localizable.strings:0: error: read failed: The data couldn’t be read because it has been corrupted.

以前も見たことのあるエラーで、そのときは最後のセミコロンを忘れていたり、ダブルクオーテーションを忘れていた。
今回も同様の間違いだろうと一行ずつチェックしていったが見当たらない。

そこでファイルの後半半分を消してコンパイルしなおし、エラーがなければ後半4分の1を消してコンパイルというようなことを繰り返しエラーの行を特定した。
その行のエラーの原因は「 = の右側に全角空白がある」ことだった。

これはパッと見では分からないので中々発見し辛いエラーだった。
せめて行番号だけでも教えてくれればはかどるのに。


cocos2d + AppBank広告


cocos2dで作っているアプリにAppBankの広告を載せようと思ったのだが、自力では無理なのでいつものようにgoogleで調べた。

参考になったというか、ほぼコピペで使わせてもらったのは以下のサイト。
cocos2dレイヤの上に広告を表示する – ICT Fractal 公式 blog

このサイトを参考にしつつ、広告を非表示にする際に、
[adView pause];
広告を再表示する際に、
[adView resume];
のような処理を追加した。

cocos2dを勉強しようと思って間違ってcocos2d-xの書籍を買ってしまって仕方なくcocos2d-xを勉強したのだが、その当時はgoogleで検索するとcocos2dのサンプルコードばかりが見つかるという状況だった。
そのため、せっかく書き慣れてきたobjective-cを捨て去るのもなんだし、cocos2dで行くか、とcocos2dのアプリを作り始めたのだが、あまりに開発速度が遅過ぎて、なんだか最近はcocos2d-xの検索結果の方が断然多くてcocos2dの情報を探すのに苦労するようになってきた。

全然時代の流れに着いていけてないです。
asset catalogなんてものがあることに最近気付いたくらいだし。


CCLabelTTFで使用できるフォント名


cocos2dでプログラミング中。
CCLabelTTFで指定できるフォント名の一覧を探していてこちらのページを見つけた。

[cocos2d] CCLabelTTFで利用出来るFontについて | きぶんはおっさん

どこかに一次ソースがあるんだろうけど見つけることができない。。。
macのFont Bookの中にあるフォントが全て使えるってわけでもないみたいでよくわからない。
2012年の情報のようだけど、これ以降変更はないんだろうか。

— 追記 —
どうやらここに書いてあるフォント一覧と同じらしい。
UIFont – iPhoneアプリ開発の虎の巻

上記のフォントはXcode3.2上で、familyNamesメソッドを使用して出力したフォント名を掲載しています。

と書いてあるので、CCLabelTTFではXcodeに入っている(iOSに含まれる?)フォントがそのまま使えるということでいいのかな?


カイトランカー PlayStation4 に対応


私が管理しているゲーム買取価格のランキングサイト カイトランカー がPlayStation4に対応しました。
Playstation 4 のゲームの新品価格、中古価格、買取価格を売り上げランキングや最安価格-買取価格の価格差などでソートできます。
買取対象はまだ16本しかありませんが。


AutoLayout使用時のviewのframe確定のタイミング


AutoLayoutを使用しているとviewDidLoadの時点では、viewのframeが確定していないそうなのでメモ。

やりたかったのは、uiviewの初期位置を保存しておいて、uiviewを消し、後でその場所に再び表示さるというだけのこと。
なのだが、viewDidLoadの中でuiviewの初期位置を保存しておいて、後でその位置に表示しても同じ位置に復元できなかったのだ。

[iOS6] AutoLayoutを使用すると、viewWillAppear: でframeが決定しないので注意 | Zero4Racer PRO Developer’s Blog
こちらのサイトの情報によると、AutoLayoutを使用しているとviewDidLoad、viewWillAppearではframeが決定されないらしい。
で、どのタイミングでframeが決定しているのかというと、viewDidLayoutSubviewsの中では既に決定しているらしい。
というわけで、AutoLayoutを使用しているときにviewの位置を知りたいときには、viewDidLayoutSubviewsの中で調べるのが正解っぽい。

そもそも今までviewDidLayoutSubviewsというものの存在を知らなかったなぁ。
viewcontrollerにsubviewのレイアウトが完了したことを知らせるメソッドだそうで。