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

UIAlertView 添加textview。

2018年02月14日 ⁄ 综合 ⁄ 共 3263字 ⁄ 字号 评论关闭

现在 苹果新出的 很省事不用这么麻烦了::::

;;;  [alertview setAlertViewStyle:UIAlertViewStyleSecureTextInput];

首先要自定义一个UIAlertView扩展类,如MAlertView:

.h文件

#import<Foundation/Foundation.h>

@interface MAlertView :UIAlertView {

   
UITextField
*passwdField;

   
NSInteger
textFieldCount;

}

- (void)addTextField:(UITextField *)aTextField placeHolder:(NSString *)placeHolder;

@end

.m文件

#import"MAlertView.h"

#define kMAlertViewTextFieldHeight30.0

#define kMAlertViewMargin10.0

@implementation MAlertView

- (void)initialize{

}

//2 buttons supported at most

- (id)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id)delegate
cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, ...{

   
if
((self = [superinitWithTitle:title
message:message delegate:delegate
cancelButtonTitle:cancelButtonTitle
otherButtonTitles
:otherButtonTitles,nil])) {

    }

   return
self;

}

- (void)layoutSubviews{

   
CGRect
rect = self.bounds;

    rect.size.height
+=
textFieldCount*(kMAlertViewTextFieldHeight +kMAlertViewMargin);

   
self
.bounds = rect;

   
float
maxLabelY = 0.f;

   
int
textFieldIndex = 0;

   
for
(UIView *view
in
self.subviews) {

       if ([view
isKindOfClass:[UIImageViewclass]]) {

            

        }

      else
if ([view
isKindOfClass:[UILabelclass]]) {

           

            rect = view.frame;

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

        }

       else
if ([view
isKindOfClass:[UITextFieldclass]]) {

            

            rect = view.frame;

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

            rect.size.height
=
kMAlertViewTextFieldHeight;

            rect.origin.x =kMAlertViewMargin;

            rect.origin.y = maxLabelY +kMAlertViewMargin*(textFieldIndex+1) +
kMAlertViewTextFieldHeight*textFieldIndex;

            view.frame = rect;

            textFieldIndex++;

        }

       else
//UIThreePartButton

            

            rect = view.frame;

            rect.origin.y =self.bounds.size.height
- 65.0;

            view.frame = rect;

        }

    }

}

- (void)addTextField:(UITextField *)aTextField placeHolder:(NSString *)placeHolder{

   
if
(aTextField != nil) {

       textFieldCount++;

        aTextField.frame =CGRectZero;

        aTextField.borderStyle =UITextBorderStyleRoundedRect;

        aTextField.placeholder = placeHolder;

        [selfaddSubview:aTextField];

//        [self setNeedsLayout];

    }

}

@end

如何使用此扩展类:

- (void)viewDidLoad

{

    [superviewDidLoad];

    MAlertView *alert = [[MAlertViewalloc]initWithTitle:@"Title"message:nildelegate:selfcancelButtonTitle:@"Cancel"otherButtonTitles:@"OK",nil];

    UITextField* accountField=[[UITextFieldalloc]init];

    UITextField* passwdField=[[UITextFieldalloc]init];

    [alert addTextField:accountField
placeHolder
:@"Account"];

    [alert addTextField:passwdField
placeHolder
:@"Password"];

    [alert show];

    [alert release];

}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex//按键响应函数

{

    NSString* msg = [[NSStringalloc]initWithFormat:@"您按下的第%d个按钮!",buttonIndex];

    UIAlertView* alert = [[UIAlertViewalloc]initWithTitle:@"提示"

                                                   message:msg

                                                  delegate:nil

                                         cancelButtonTitle:@"确定"

                                         otherButtonTitles:nil];

    [alert show];

    [alert release];

    [msg release];

    

}


效果如图。



进行了简单的封装,只需要用addTextField:placeHolder:方法将textField加进去就好了,其他使用方法和UIAlertView完全一样。

再作些补充说明:因为UIAlertView只有在点击了按钮才能进行交互,所有的text值都是在点击之后获取对应的textField的值。

有些朋友说空值的情况,这个可以在点击之后判断如果是空值就再次弹出alertView就可以了


参考:http://www.cocoachina.com/bbs/read.php?tid=86733

下载源代码:http://download.csdn.net/detail/x1135768777/4214283

抱歉!评论已关闭.