Tom's Memo

日々の記録と趣味と個人的メモ

【iPhone開発】UITableView上にあるUITextViewキーボードを閉じたい

2012-06-28 16:28:39 | メモ
UITableView上にあるUITextViewキーボードの閉じ方で
UINavigationControllerにボタンを配置して閉じる方法でハマったのでメモ


まずは簡単に以下のように実装

// 各CellにObjectをセット
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath {
TableCell *cell = (TableCell *)[tableView dequeueReusableCellWithIdentifier:ID];

UITextView *textView = [[[UITextView alloc] initWithFrame:CGRectMake(95, 7, 200, 30)] autorelease];
textView.delegate = self;
textView.editable = YES;
[cell.cellView addSubview:textView];
return cell;
}

// キーボードを閉じる処理
- (BOOL)onDissmissKeyboard:(UITextView *)textView{
[textView resignFirstResponder];
return YES;
}

// UITextViewをタップし編集モード開始したタイミングで
// UINavigationControllerにキーボードを閉じるボタンを配置
// ボタン押下時処理はonDissmissKeyboardを呼び出す。
-(void)textViewDidBeginEditing:(UITextView *)textView{
UIBarButtonItem *btnClose = [[[UIBarButtonItem alloc] initWithTitle:@"Close" style:UIBarButtonItemStyleDone target:self action:@selector(onDissmissKeyboard:)]autorelease];
self.navigationItem.leftBarButtonItem = btnClose;
}

// UITextView編集モード終了時UINavigationControllerに配置したボタンを非表示にする。
- (void)textViewDidEndEditing:(UITextView *)textView {
[self.navigationItem setLeftBarButtonItem:nil animated:NO];
}


この実装だと延々とキーボードを閉じる処理にてエラーが発生した。

-[EditTextViewController onDissmissKeyboard:textView:]: unrecognized selector sent to instance 0x4e60710
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[EditTextViewController onDissmissKeyboard:textView:]: unrecognized selector sent to instance 0x4e60710'
*** Call stack at first throw:
(
0 CoreFoundation 0x010575a9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x011ab313 objc_exception_throw + 44
2 CoreFoundation 0x010590bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3 CoreFoundation 0x00fc8966 ___forwarding___ + 966
4 CoreFoundation 0x00fc8522 _CF_forwarding_prep_0 + 50
5 UIKit 0x003404fd -[UIApplication sendAction:to:from:forEvent:] + 119
6 UIKit 0x00552cc3 -[UIBarButtonItem(UIInternal) _sendAction:withEvent:] + 156
7 UIKit 0x003404fd -[UIApplication sendAction:to:from:forEvent:] + 119
8 UIKit 0x003d0799 -[UIControl sendAction:to:forEvent:] + 67

・中略

21 GraphicsServices 0x019ae289 GSEventRun + 115
22 UIKit 0x0034ec93 UIApplicationMain + 1160
23 editText 0x000255cc main + 102
24 editText 0x000022d5 start + 53
)
terminate called after throwing an instance of 'NSException'
Current language: auto; currently objective-c
(gdb)

どうもFirstResponderがフォーカスしているObjectがUITextViewではなく
BarButtonItemになっているのが原因ぽい。。。

対処するにはキーボードを閉じるのではなく、編集モードを終了することにより
キーボードを閉じればよいので、キーボード閉じる処理を以下のように修正。

- (BOOL)onDissmissKeyboard:(UITextView *)textView{
// [textView resignFirstResponder];
[self.view endEditing:YES];
return YES;
}

これで想定通りの動きになった。

ここにたどり着くまでに2日ぐらいかかったけどなんとか解決!

appStoreからアプリがダウンロードできない

2012-04-18 10:42:08 | メモ
初めて見る現象が発生したのでメモ

アプリをappStoreからダウンロードすると
画像のようにインストールボタンが壊れダウンロードできなくなった。
また、画面キャプチャが表示されなくなっていた。



直前に行ったことはアプリのキャプチャ画像の入れ替えのみ
アプリ自体のリリース作業は行っていない

調べたが原因は掴めなかった。
また同様の現象についても特に見当たらなかったのでとりあえず画面に出ていた
以下の最新版のコントラクト2つに同意
 ・The iOS Paid Applications contract
 ・The iAd Network contract

直後から画面が正常に戻り、ダウンロード可能となった。

 

最新版の「The iOS Paid Applications contract」への同意がなされていない状態でキャプチャを入れ替えたことが原因?

結論:よくわからない!orz

また発生しても困るしとりあえず引き続き調査しよう。。。

iPhoneアプリ公開時にはまったのでメモ

2012-03-06 17:31:28 | メモ
iPhoneアプリ公開時の覚書

icon.pngは57x57で作成し、Referencesに配置していてもValidationでエラーとなる。


-------------- 環境 --------------
Xcode : 4.0
iOS SDK : 4.3
Mac OSX: 10.6.8 (snow leopard)
---------------------------------
いい加減環境Upgradeしなきゃ。。。


------------- エラー -------------
The following issues were found during validation:
iPhone/iPod Touch: icon.png: icon dimensions (0x0) don't meet the size requirements. The icon file must be 57x57 pixels,in .png format.
---------------------------------

Icon.pngとし、info.plist、ReferencesもIcon.pngにしないと
Validation通っても申請時にInvalid Binaryとされてしまい、
申請できない。

Invalid BanaryとなってもCode Signがおかしい等ではないのでAppleからメールも来ない。

アプリの内容は未変更、一部画像の差し替えのみだった為、原因つかむのに小一時間はまった。。。

[iPhone開発]実機デバッグ時に「failed to get the task for process XXXX」が発生する

2011-04-14 12:06:31 | メモ
はまったのでメモ

実機をmacbookに接続し、コマンド+Rでデバッグを開始すると
「Error launching remote program: failed to get the task for process XXXX」
が発生し、デバッグが行えない。


原因はBuild時の設定がDebugではなくDistributionになっていたことと判明

設定方法は以下の通り

1.DeviceからEdit Schemeを選択
2.Build ConfigurationのプルダウンよりDebugを選択
3.OKボタンを押し、設定を保存。




とりあえずこれで回避できた。
おそらくBuild Configurationごとに使用するProvision Profileが違うんだろうなぁ。。。

Provision Profileの設定をどこで行うかは引き続き要調査だな。

今更ながらOlympus E-PL1購入

2011-02-20 22:12:54 | 日記
OLYMPUS PENが発売されてもう2年

最近だと先月E-PL1sが発売されたお陰かE-PL1が相当お安くなってますね



という事で使うかどうかも怪しいですがOLYMPUS PEN Lite E-PL1 ツインレンズキット購入してきた

とはいえ本当はE-PL2が欲しかった。。。
ボディーだけならE-PL2も買えたけどレンズがなければ一切意味がない

という事で予算と本体+レンズ2本の魅力に負けてE-PL1に落ち着きました。

さぁ時間見つけて写真撮影ポタに行きましょう

とりあえずは荒川サイクリングロードとスカイツリーかな♪