iOS

unwind segue が難しくて・・・

unwind segue は難しい。以前 try して、結局うまくいかず、今回は、ま、実装したけどちょっと妥協したって感じ。これね、わかりにくいです。 まず、unwind segue として実装する method は、先に m なり h なりに書いておく必要があるということ。書くのは…

Localization の苦手意識・・・

App を審査に提出したら、reject。理由は、Location 機能を使うならちゃんと利用者に説明しろとのこと。具体的には、info.plist に記述してということ。実は、審査に提出した後、あ、やってなかったなと思ってたんだけどやっぱ見逃してくれないね。指摘事項…

UITextView の context menu

UITextView の context menu で、いろいろ出てくるわけですが、Copy, Select All, Share ぐらいに絞って表示したいなぁと。簡単だと思ったら、結構ハマった。 まず、UITextView の sub class を新設。 contex menu は次の method で検知できる。 -(BOOL) can…

Navigation Controller は曲者だ・・・

ふぅ、やっと出来た・・・ Navigation Controller を使った画面を作成していて、はまった点をいくつか・・・ Navigation Controller で検索すると結構な数がヒットする。いろいろ眺めてみたけど、自分の状況とは違っているなと感じる点として、大抵の解説で…

UserNotifications、identifier にハマった・・・

iOS 10 以降、UserNotifications の framework が変わったようで、 UNNotificationRequest やら、UNNotificationCenter やら、頭に UN を冠する見慣れない class が出現した訳だ。で、実際に notification を登録するには次のような形を取る: UNNotificatio…

Property type 'id<STClockDelegate>' is incompatible with type 'id<SKSceneDelegate> _Nullable' inherited from 'SKScene' ってなんだよ

@property (nonatomic, assign) id<STClockDelegate> delegate; h ファイルに property を定義していたら、謎の警告が・・・ Property type 'id<STClockDelegate>' is incompatible with type 'id<SKSceneDelegate> _Nullable' inherited from 'SKScene' SKSceneDelegate の sub class である STClockDelegate を</skscenedelegate></stclockdelegate></stclockdelegate>…

App で Dark Appearance に対応するには・・・(Dark Appearance を無効にする)

iOS 12 辺りから?でしたか?Dark Appearance というのがあり、目に優しい感じがして自分でも利用しているわけですが、App 製作者からすると、これまた厄介な問題が・・・ 何が問題なのかと言うと、一番困るのが画像。background color として白を想定してい…

Storyboard に作ってある ViewController を code で呼ぶには

Storyboard に ViewController を定義してあって、code から画面表示するにはどうするか。 hoge* lv = [hoge new]; とやってみたんだけどダメで、調べてみたら次のような method があった。 hoge* lv = [self.storyboard instantiateViewControllerWithIdent…

CoreData、relate 先の N テーブルに record を保存する

CoreData はホント鬼門。以前はまって、かなり理解したつもりなんだけど相変わらず分からなくなってしまう。分からなくなる原因は、automatic で処理される部分があるためで、method 名とかも table の名称に応じて変化するため余計分からなくなる。でも、そ…

Master-Detail にはいつも悩まされるね。

Master-Detail のテンプレートを使ってアプリを作っていると、デフォルトのテンプレートの出来栄えのよさに感心してしまう。素晴らしいなと。splitView や navigationController の対応など、これを素で作ろうとしたら、困難を究めることは間違いない、って…

UIView をアニメーションさせると、タップしても反応しないぞ?の対応

UIView に animation を指定した時の話。 UIView を丸くして、Start ボタンのつもり。Start を押したら Stop に表示を切り替えて、さらに、ボタンの alpha を薄くしたり戻したりして生きている風にした訳。それで、もっかいタップしたら、Stop ラベルを Star…

NSMakeRange にはまる

NSMakeRange にはまった・・・ 文字列から部分的に文字列を取出したい場合、Python だと、3 文字目から 5 文字目だったら、[2 : 5] みたいに、start, end で指定する訳だ。すっかりそれに慣れてたら、NSMakeRange でははまる。NSMakeRange では、start, leng…

shouldPerformSegueWithIdentifier は曲者だ。

ようやくアプリをリリースできたんだけど、、、 Direction of Your Destination Satoshi TANAKA Lifestyle Free apps.apple.com 指摘された部分を改修してたらバグを見つけてしまい、解決できなくて困ったなぁ。とりあえず、見つけたバグは指摘されていない…

Direction of Your Destination

目的地の方角を示すアプリが欲しくて、作成した。 従来のナビアプリは道順や予想到着時刻がわかって便利なんだけど、自転車に乗っている時なんかは道順を見るために立ち止まったりしたくないもので、方角と残距離だけわかればよく、そんなアプリ。 方角と残…

applicationWillResignActive とか、どうすんの

いやー、マジはまった。 ライフサイクルの話ね。GPS とか方角を使うアプリ作ってて、こういうアプリはすごい電池喰うから、バックグラウンドに回ったら中断、フォアグラウンドに回ったら再開ってことにしたかったのね。車で言うところの、アイドリングストッ…

Container View を使って delegate

ViewController の中に UIView と UILabel がセットになった View を置きたくなり、それって、結局、ViewController の中に ViewController を配置するということか?と思い、はて、いったいどうやるんだ? Storyboard に配置した ViewController の中に Vie…

mapView に delegate method があるの知らなかった・・・

MapKit を使うアプリを作ってて、user location と goal location の距離や方角を計算しようとしたときの話。 user location の緯度・経度を調べるとどちらも 0 になってしまい、緯度・経度 0 の地点が現在地になり、距離なんてすごいことに・・・ viewDidLo…

CLLocationCoordinate2D に値が入っているかを確かめるには?

CLLocationCoordinate2D に値が入っているのか確かめるにはどうするか。== nil とかやってもダメ。調べてみたところ、次のような関数が・・・ BOOL CLLocationCoordinate2DIsValid(CLLocationCoordinate2D coord); うわー、知らなかったなー。便利だけど、専…

CLLocationCoordinate2D に値が入っているかを確かめるには?

CLLocationCoordinate2D に値が入っているのか確かめるにはどうするか。== nil とかやってもダメ。調べてみたところ、次のような関数が・・・ if ( CLLocationCoordinate2DIsValid( _locationOfGoal ) ) 便利だけど、専用の関数作るって・・・冗舌。

Pin 表示と compass 表示ではまる

MapKit を使っていて、long tap したところに pin を打つ、せっかくだからカスタマイズしてと、カスタマイズは pinView といいう class を作ってそこでカスタマイズするのですよ、と進めていたところ、ところで、現在地も表示したくなってきたんだけど・・・…

simlator で現在地を表示できないぞ?

アプリ作ってて、simlator に現在地を表示しようとしたらできない。なんで? Xcode で simlator の設定変更が必要だったと。 Product > Schema > Edit Schema Run, Core Location, Allow Location Simulation を On に。 また、Default Location が None だ…

simlator で現在地を表示できないぞ?

アプリ作ってて、simlator に現在地を表示しようとしたらできない。なんで? Xcode で simlator の設定変更が必要だったと。 Product > Schema > Edit Schema Run, Core Location, Allow Location Simulation を On に。 また、Default Location が None だ…

実機テストへの遠い道のり・・・

App を作ってて、テストするときの話。実機でテストするなら、以前は macbook に iPhone をケーブルでつないでアプリを転送して・・・みたいなことが必要で、ケーブル繋ぐのめんどくセーというのがあったんだけど、最近は connect に App を転送して TestFli…

UIBezierPath で、線の端を丸くするには・・・

UiBezierPath で直線を描く。線の端が角ばっていて、なんとなく、いやンな感じ。端を丸くしたい。丸くするにはどうするのか。 調べたところ、lineCapStyle という property があるではないか。勇んで property を設定しても、変化なし・・・? bezierPath.li…

storyboard でもっかい接続してみるってのも、原始的ながら有効なことあるんだね。

今日ハマったのは、navigationController で戻ってきたときの値の渡し方と、 viewDidLoad が呼ばれないので KVO の登録ができず、結果、値が変わっても呼ばれないという罠。 順を追って説明すると、navigationController の back ボタンで戻ってきました。さ…

後から navigation controller を追加するとハマるね。

Xcode でアプリ作ってて、sigleton テンプレートで進めていたら、後から navigation bar を追加したくなって、簡単・簡単とタカをくくっていたらハマるねこれ。 まず、storyboard に navigation bar を追加しようと object の一覧を見たら navigation bar と…

UITextField に何も入力されていないの判定

UITextField に何も入力せず return を押した場合、検索処理などをせず無視したいところ。これを実現するため、UITextField に何も入力されていないことを確認するにはどうするのか。 すぐに思いついたのが文字数を確認する方法。これ、やり方よくわからない…

iTunes Store での支払い

コンビニで iTunes Store のカードを買ってきて、曲をいくつか買って、残高が ¥200 ぐらいある状態。この状態で ¥250 の曲を買うとどうなるか。 普通に考えると、¥50 足りないので、買えない。でも、アカウントにクレジットカードが登録してあると、残高の ¥…

UIImageView のパラパラアニメにハマる・・・

いやー、はまりましたね。 猫の尻尾をゆらゆらさせたくて、猫の絵を傾けたりなんやらしてたのですが、どうにもうまくいかない。 しょうがないので画像を差し替えることでパラパラアニメにしようと試みたところ、それもうまくいかない。 パラパラアニメは次の…

UIView の背景を透明に・・・

UIView 内に画像を表示しアニメーションさせる。異動先で、UILabel と重なり合うのだが、UIView の背景が白のため、重なった時になんかヘン。UILabel の文字が欠けてしまったように見える。 そんな時は、UIView の背景を透明にすればよいのだ、と、次のよう…