zoukankan      html  css  js  c++  java
  • UIAlertView小结

    1. 如何判断用户点击的按钮

    UIAlertView有一个委托UIAlertViewDelegate ,继承该委托来实现点击事件

     头文件:

    @interface MyAlertViewViewController : UIViewController<UIAlertViewDelegate> {

    }

    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;

    -(IBAction) buttonPressed;

    @end

    源文件:

    -(IBAction) buttonPressed

    {

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

                                                     message:@"请选择一个按钮:

                                                     delegate:self   

                                                     cancelButtonTitle:@"取消

                                                     otherButtonTitles:@"按钮一", @"按钮二", @"按钮三",nil];  

    [alert show];  

    [alert release]; 

    }

    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

    {

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

    UIAlertView* alert = [[UIAlertView alloc]initWithTitle:@"提示"     message:msg

                                                     delegate:nil

                                                     cancelButtonTitle:@"确定"

                                                     otherButtonTitles:nil];

    [alert show];

    [alert release];

    [msg release];

    }

    点击取消按钮一按钮二按钮三的索引buttonIndex分别是0123

     2. 手动的取消对话框

    [alertdismissWithClickedButtonIndex:0 animated:YES];

    3:为UIAlertView添加子视图

    在为UIAlertView对象太添加子视图的过程中,有点是需要注意的地方,如果删除按钮,也就是取消UIAlerView视图中所有的按钮的时候,可能会导致整个显示结构失衡。按钮占用的空间不会消失,我们也可以理解为这些按钮没有真正的删除,仅仅是他不可见了而已。如果在UIAlertview对象中仅仅用来显示文本,那么,可以在消息的开头添加换行符(@"\n)有助于平衡按钮底部和顶部的空间。

    下面的代码用来演示如何为UIAlertview对象添加子视图的方法。

    UIAlertView*alert = [[UIAlertView alloc]initWithTitle:@"请等待

                                                     message:nil

                                                     delegate:nil   

                                                     cancelButtonTitle:nil 

                                                     otherButtonTitles:nil];  

    [alert show];

    UIActivityIndicatorView*activeView = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

    activeView.center = CGPointMake(alert.bounds.size.width/2.0f, alert.bounds.size.height-40.0f);  

    [activeView startAnimating];  

    [alert addSubview:activeView];  

    [activeView release];  

    [alert release];  

    4.  UIAlertView默认情况下所有的text是居中对齐的。那如果需要将文本向左对齐或者添加其他控件比如输入框时该怎么办呢?不用担心, iPhone SDK还是很灵活的,有很多delegate消息供调用程序使用。所要做的就是在

    - (void)willPresentAlertView:(UIAlertView *)alertView

    中按照自己的需要修改或添加即可,比如需要将消息文本左对齐,下面的代码即可实现:

    -(void) willPresentAlertView:(UIAlertView *)alertView

    {

          for( UIView * view in alertView.subviews )

          {

                if( [view isKindOfClass:[UILabel class]] )

                {

                      UILabel* label = (UILabel*) view;

                      label.textAlignment=UITextAlignmentLeft;

                }

          }

    }

     这段代码很简单,就是在消息框即将弹出时,遍历所有消息框对象,将其文本对齐属性修改为 UITextAlignmentLeft即可。

    添加其他部件也如出一辙,如下代码添加两个UITextField:

    -(void) willPresentAlertView:(UIAlertView *)alertView

    {

          CGRect frame = alertView.frame;

          frame.origin.y -= 120;

          frame.size.height += 80;

          alertView.frame = frame;

          for( UIView * viewin alertView.subviews )

          {

                if( ![viewisKindOfClass:[UILabelclass]] )

                {

                      CGRect btnFrame = view.frame;

     btnFrame.origin.y += 70;

                      view.frame = btnFrame;

                }

    }

    UITextField* accoutName = [[UITextFieldalloc] init];

    UITextField* accoutPassword = [[UITextFieldalloc] init];

    accoutName.frame = CGRectMake( 10, frame.origin.y + 40,frame.size.width - 20, 30 );

    accoutPassword.frame = CGRectMake( 10, frame.origin.y + 80,frame.size.width -20, 30 );

    accoutName.placeholder = @"请输入账号";

    accoutPassword.placeholder = @"请输入密码";

    accoutPassword.secureTextEntry = YES;

    [alertView addSubview:accoutPassword];

    [alertView addSubview:accoutName];

    [accoutName release];

    [accoutPassword release];

    }

     显示将消息框固有的buttonlabel移位,不然添加的text field会将其遮盖住。然后添加需要的部件到相应的位置即可。

    对于UIActionSheet其实也是一样的,
    - (void)willPresentActionSheet:(UIActionSheet *)actionSheet
    中做同样的处理一样可以得到自己想要的界面。

  • 相关阅读:
    asp.net 浏览器下载文件的四种方式
    微信网页认证asp.net core返回MP_verify_CuUky7CS6gvKrMSe.txt
    qrcode length overflow (1632>1056)qrcode.js使用过程中二维码长度溢出解决办法
    layui的文档位置
    在64位Win2008 Server 系统上部署SSIS包遇到的问题及解决办法
    SQL SERVER 2008 中收缩数据库日志
    Reporting Service 按需隐藏导出类型
    SQL语句统计数据库中数据 有心人
    NC27 集合的所有子集(一)
    java虚拟机
  • 原文地址:https://www.cnblogs.com/Cristen/p/2781161.html
Copyright © 2011-2022 走看看