UIAlertView,UIActionSheet, UIMenuController

本文详细介绍了UIAlertView和UIActionSheet的使用方法,包括UIAlertView的基本配置、按钮布局、输入框处理及位置设置等内容,并对比了UIAlertView与UIActionSheet的区别。

1.<<iphone开发基础教程>>4.7实现按钮,操作表,警报.


2。UIAlertView示例

UIAlertView* alert=[[UIAlertView alloc] initWithTitle:@"title" message:@"message" delegate:nil cancelButtonTitle:@"cancel"
          otherButtonTitles:@"other1",@"other2",@"other3",@"other4",nil];
 [alert autorelease];
 NSArray* vArray=[alert subviews];
 for(UIView* v in vArray)
 {
  NSLog(@"tag:%d,%@",v.tag,[[v class] description]);  }
 [alert show];

打印出

tag:0,UILabel
tag:0,UILabel
tag:1,UIThreePartButton
tag:2,UIThreePartButton
tag:3,UIThreePartButton
tag:4,UIThreePartButton
tag:5,UIThreePartButton

在界面上的排列顺序从上到下是 other1....cancel.


3.

UIAlertView中带有输入框时,

#pragma mark UITextFieldDelegate
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{    
    [textField resignFirstResponder];
    [self resignFirstResponder];//加上这句可隐藏键盘,否则隐藏不了。但此时UIAlertView降到屏幕中间,默认它在屏幕上部显示。
    
    return YES;


            //设置弹出框在屏幕上的位置
            //[dialog_ setTransform:CGAffineTransformMakeTranslation(0.0, 20.0)];

在- (void)willPresentAlertView:(UIAlertView *)alertView;  // before animation and showing view中可以修改对话框的样式;


typedef enum {
   UIAlertViewStyleDefault = 0,
   UIAlertViewStyleSecureTextInput,
   UIAlertViewStylePlainTextInput,
   UIAlertViewStyleLoginAndPasswordInput
} UIAlertViewStyle;                                           //Available in iOS 5.0 and later.



4.如果要使用多个按钮,考虑使用UIActionSheet,在UIAlertView中竖排的按钮看起来不够简练。

   UIAlertView中高亮的按钮只有Cancel按钮,它一般出现在UIAlertView的左边或底部。并且它的index始终为0。但在UIActionSheet中不是一直为0。

   但系统的删除程序提示却,删除在左,取消在右。

   提示:如果要在一个回调函数中处理多个警告框事件,可以设置标记。

              另一种管理UIAlertView内存的方法是,在回调中释放它。


5.使用run循环创建直接返回的模态警告框。

 

6.UIActionSheet

   它的按钮的索引值从上向下,从0开始递增。

   使用showInView,在视图中从下向上弹出式显示;另外还有showFromToolBar,showFromTabBar。


7.UIMenuController
(1. Menu所处的View必须实现 – (BOOL)canBecomeFirstResponder, 且返回YES
(2. Menu所处的View必须实现 – (BOOL)canPerformAction:withSender, 并根据需求返回YES或NO
(3. 使Menu所处的View成为First Responder (becomeFirstResponder)
(4. 定位Menu (- setTargetRect:inView:)
(5. 展示Menu (- setMenuVisible:animated:)



8.     UIMenuItem *menuItem = [[UIMenuItem alloc] initWithTitle:@"Change Color" action:@selector(changeColor:)];
        NSArray* menuItems=[NSArray arrayWithObject:menuItem];

        UIMenuController *menuController = [UIMenuController sharedMenuController];
       

[menuController setTargetRect:self.frame inView:self.superview];
       

menuController.arrowDirection = UIMenuControllerArrowLeft;
       

menuController.menuItems =menuItems;
      

[menuController setMenuVisible:YES animated:YES];



9 . 在UIWebView上追加菜单项

(1) //添加“选中回复”菜单项到sharedMenuController
    UIMenuItem* menuItem0 = [[[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"回复",nil) action:@selector(copyAndReply)] autorelease];
    NSArray* menuItemarray = [NSArray arrayWithObjects:menuItem0,nil];
    UIMenuController* sharedMenuController = [UIMenuController sharedMenuController];
    [sharedMenuController setMenuItems:menuItemarray];  // default is nil. these are in addition to the standard items

(2)//当sharedMenuController被显示时,系统会询问当前UIViewController的canPerformAction方法,菜单项的显示情况。

    - (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    if (action == @selector(copyAndReply))
    {
        return YES;//表示可以显示此项
    }
    return [super canPerformAction:action withSender:sender]; //或return NO;
}

(3)//实现这个方法,处理点击后的操作
-(void)copyAndReply
{
    NSString* content=[webView_ stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString();"];
    // ...
}


10.关闭Alert

-(void)dismissAlertView
{
    UIWindow* keyWindow=[UIApplication sharedApplication].keyWindow;
    if([keyWindow isKindOfClass:NSClassFromString(@"_UIAlertOverlayWindow")])
    {
        NSArray *subViews = [keyWindow subviews];
        for (UIView* subview in subViews)
        {
            [self dismissAlertInView:subview];
        }
    }
}

-(void)dismissAlertInView:(UIView*)view
{
    if ([view isKindOfClass:[UIAlertView class]])
    {
        UIAlertView *alertView = (UIAlertView *)[view retain];
        [alertView dismissWithClickedButtonIndex:alertView.cancelButtonIndex animated:NO];
        [alertView release];
    }
    else if ([view isKindOfClass:[UIActionSheet class]])
    {
        UIActionSheet *alertView = (UIActionSheet *)[view retain];
        [alertView dismissWithClickedButtonIndex:alertView.cancelButtonIndex animated:NO];
        [alertView release];
    }
    else
    {
        NSArray* subviews = [view subviews];
        for (UIView* subview in subviews)
        {
            [self dismissAlertInView:subview];
        }
    }
}


这个是完整源码 python实现 大数据 Spark pyspark 可视化大屏+Kafka+FastAPI+Vue3 【深度学习毕业设计】人脸识别 智能门禁系统(深度学习+OpenCV DNN+FastAPI+Vue3) 源码+论文 完整版 数据库Mysql 出入控制是安防体系中的基础环节。长期以来,IC 卡、密码键盘和门禁钥匙在企事业单位中广泛使用,但存在卡片易丢失、密码易泄露、冒用难追溯等问题。尤其在人员流动性较高的园区与写字楼场景中,卡片补办成本高,权限变更往往滞后,管理方难以及时掌握“谁在何时从何处进出”的完整信息。近年来,深度学习推动生物特征识别技术快速落地,人脸识别因采集成本低、通行体验好、可与视频监控联动,成为智能门禁的主流方案之一。 在智慧园区和数字化办公场景中,门禁系统不仅要完成“开门”,还要完成“管人、管设备、管权限、管记录、管告警”的闭环。将人脸识别与后台管理系统结合,能够把身份核验、权限策略和安全事件处理统一到同一平台,提升管理效率与安全水平。对组织管理者而言,系统可以支撑考勤辅助、访客管控与安全审计;对通行者而言,非接触式识别减少了掏卡刷卡的繁琐步骤,也降低了交叉接触风险。因此,研究并实现一套结构清晰、技术路线明确、可演示可扩展的带人脸识别智能门禁系统,具有明确的工程意义与教学价值。 本课题选择 OpenCV DNN、YuNet 与 SFace 作为识别技术路线,结合 Python、FastAPI 与 Vue3 完成系统开发。该方案无需依赖商业闭源 SDK,模型文件体积较小,部署门槛低,适合本科毕业设计在有限硬件条件下完成可运行原型,同时又能体现深度学习在实际工程中的应用方式。与单纯调用云端识别 API 相比,本地化推理更有利于保护人脸生物特征数据,也便于在论文中完整展示算法调用链路与系统设计细节。 从人才培养角度看,本课题横跨软件工程、数据库原
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值