久々にブログ書く。最近忙しくて、暇がない~

iphone5が出てからサイズ変更の対応やら、ios6とios5のコードの書き方の違いやらで面倒です。

今日は発見した違い⬇

UISearchBarを使ってるんだけど、そのキーボードに閉じるボタンを追加しようとした時の発見です。

ios6では下記でも問題なく動きます。

UIView* accessoryView =[[UIView alloc] initWithFrame:CGRectMake(0,0,320,50)];
accessoryView.backgroundColor = [UIColor whiteColor];
accessoryView.layer.borderColor=[[UIColor lightGrayColor]CGColor];
accessoryView.layer.borderWidth=0.5;
// ボタンを作成する。
UIButton* closeButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
closeButton.frame = CGRectMake(210,10,100,30);
[closeButton setTitle:@"閉じる" forState:UIControlStateNormal];
// ボタンを押したときによばれる動作を設定する。
[closeButton addTarget:self action:@selector(closeKeyboard:) forControlEvents:UIControlEventTouchUpInside];
// ボタンをViewに貼る
[accessoryView addSubview:closeButton];

_searchBar.inputAccessoryView = accessoryView;

が、ios5では_searchBar.inputAccessoryView = accessoryView;ここで落ちる。

ios5では下記の書き方でないと通らないのです~。これはUISearchBarの場合だけだけど。
 
UITextField *searchBarField = nil;
for (UIView *subView in _searchBar.subviews) {
if ([subView conformsToProtocol:@protocol(UITextInputTraits)]) {
searchBarField = (UITextField *)subView;
searchBarField.inputAccessoryView = accessoryView;
break;
}
}

以上~。もうすぐアプリ完成で納品だ!早く終って~