带输入框的AlertView

IOS5.0以后,UIAlertView开始支持输入框,但是在项目开发中,要适配5.0以下的系统版本,所以带有输入框的AlertView类需要自己写,以下是自己在家时写的代码,不足之处,还请大家指教一下!


//

//  UIInputAlertView.h

//


#import <UIKit/UIKit.h>


@interface UIInputAlertView : UIAlertView<UITextFieldDelegate>


@property (nonatomic,retain) UITextField                     *textFiled;

@end


============================================================================

//

//  UIInputAlertView.m

//


#import "UIInputAlertView.h"


#define kMAlertViewTextFieldHeight 30.0

#define kMAlertViewMargin 10.0

@implementation UIInputAlertView

@synthesize textFiled = m_textField;


- (id)initWithTitle:(NSString *)title

            message:(NSString *)message

           delegate:(id)delegate 

  cancelButtonTitle:(NSString *)cancelButtonTitle 

  otherButtonTitles:(NSString *)otherButtonTitles, ...

{

    self = [super initWithTitle:title

                        message:message

                       delegate:delegate

              cancelButtonTitle:cancelButtonTitle

              otherButtonTitles:otherButtonTitles,nil];

    if (self) {

        UITextField *textFld = [[UITextField alloc] initWithFrame:CGRectZero];

        textFld.backgroundColor = [UIColor whiteColor];

        [textFld becomeFirstResponder];

        textFld.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;

        textFld.delegate = self;

        textFld.borderStyle = UITextBorderStyleBezel;

        [self addSubview:textFld];

        self.textFiled = textFld;

        [textFld release];

    }

    return self;

}


- (void) layoutSubviews {

    CGRect frame = self.bounds;

    frame.size.height += (kMAlertViewTextFieldHeight + kMAlertViewMargin);

    self.bounds = frame;

    

    float maxLabelY = 0.0f;

    for (UIView *view in self.subviews) {

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

            

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

            frame = view.frame;

            maxLabelY = frame.origin.y + frame.size.height;

        }

        else if ([view isKindOfClass:[UITextField class]]) {

            frame = view.frame;

            frame.origin.x = kMAlertViewMargin;

            frame.origin.y = maxLabelY + kMAlertViewMargin;

            frame.size.width = self.bounds.size.width - 2*kMAlertViewMargin;

            frame.size.height = kMAlertViewTextFieldHeight;

            view.frame = frame;

        }else {

            frame = view.frame;

            frame.origin.y = maxLabelY + 2*kMAlertViewMargin + kMAlertViewTextFieldHeight;

            view.frame = frame;

        }

    }

}


- (void) dealloc {

    [m_textField release];

    [super dealloc];

}


@end



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CPLASF_lixj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值