UIAlertViewのカスタマイズ「addTextFieldWithValue:label:」を乗り越える その2


NSLog(@"%@",NSStringFromClass([view class])); をループの中に書いてクラス名を拾ってみる

2011-03-29 19:03:02.636 ApplicationName [8352:307] UIImageView
2011-03-29 19:03:02.639 ApplicationName [8352:307] UILabel
2011-03-29 19:03:02.641 ApplicationName [8352:307] UILabel
2011-03-29 19:03:02.644 ApplicationName [8352:307] UIThreePartButton
2011-03-29 19:03:02.646 ApplicationName [8352:307] UIThreePartButton
2011-03-29 19:03:02.648 ApplicationName [8352:307] UITextField

なんと!! 枠は UIImageView じゃないですか?
これは、勝手に写真とかを入れちゃえるってことですよね?

ボタンはというと。。。
UITreePartButton ってなんだ?
この名前を使ってクラス判定すればよいんだけど、これ自体が非公開だったらいやなので
下記のようにしてUIImageViewを捕まえて、その他にこのUITreePartButtonが来るようにする。

for(UIView *view in self.subviews)
{
 if ([view isKindOfClass:[UILabel class]]) {
				
   CGRect viewFrame = [view frame];
   viewFrame.origin.y = viewFrame.origin.y + ObjectMaxY;
   [view setFrame:viewFrame];
   ObjectMaxY = ObjectMaxY + viewFrame.size.height;

  }else if([view isKindOfClass:[UITextField class]]){
   CGRect viewFrame =CGRectMake(kUITextFieldXPadding
                                ,labelMaxY + kUITextFieldYPadding
                                , alertWidth - 2.0*kUITextFieldXPadding
                                , kUITextFieldHeight);
   [view setFrame:viewFrame];
				

  }else if([view isKindOfClass:[UIImageView class]]){


  }else{
   CGRect viewFrame = [view frame];
   viewFrame.origin.y = labelMaxY + kUITextFieldYPadding +kUITextFieldYPadding + kUITextFieldHeight;
   [view setFrame:viewFrame];
}
}

実のとこ、これでもUILabelの位置が重なっておかしいのだけれど
僕はTitleを @””にて設定して使っているので、まあいいや。