现在的位置: 首页 > 综合 > 正文

带输入框的AlertView

2013年10月29日 ⁄ 综合 ⁄ 共 2186字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.