初学ios之建立用户文本输入的模态警告框

79、iOS 模态对话框与快捷操作全解析 本文深入解析了iOS开发中的模态对话框(包括警告框和操作表)以及快捷操作的实现与应用。内容涵盖基础用法、高级配置、综合案例、性能优化和注意事项,帮助开发者更好地实现用户交互。同时通过待办事项应用的示例,展示了如何在实际项目中灵活运用这些技术,提升用户体验。 阅读详情

平时的警告框就是弹出一个警告,没想着可以输入,发现能输入文字并处理也是蛮方便的。

以注册一个用户为例,首先看看头文件需要的东西

@interface ViewController :UIViewController<UIAlertViewDelegate>{
   UITextField *_username;
   UITextField *_password;
    
   UIAlertView *loginAlert;
    UIActivityIndicatorView *indicator;
}
@end
头文件里需要两个输入框,用户名和密码,然后一个警告框,一个模态进度指示器(这个可以不要),UIAlertViewDelegate这个代理让我们处理点击按钮后的事件


实现扩展(参考书上的例子)

@interface UIAlertView (extended)
- (UITextField *) textFieldAtIndex: (int) index;
- (void) addTextFieldWithValue: (NSString *) value label: (NSString *) label;
@end

然后是实现,先在导航控制器上添加注册按钮,嘿嘿,点击它会触发registerUser这个方法。

self.navigationItem.rightBarButtonItem = [[UIBarButtonItemalloc] initWithTitle:@"注册"style:UIBarButtonItemStyleBorderedtarget:selfaction:@selector(registerUser)];

看方法的实现

//注册用户

- (void)registerUser{
    
   if (!loginAlert) {
       loginAlert = [[UIAlertViewalloc]
                     initWithTitle: @"注册"
                     message:@"请输入用户信息"
                     delegate:self
                     cancelButtonTitle:@"Cancel"
                     otherButtonTitles:@"OK",nil];
        [loginAlertaddTextFieldWithValue:@""label:@"用户名"];
        [loginAlertaddTextFieldWithValue:@""label:@"密码"];
        
        // Name field
       UITextField *usernameTxt = [loginAlerttextFieldAtIndex:0];
        usernameTxt.clearButtonMode =UITextFieldViewModeWhileEditing;
        usernameTxt.keyboardType =UIKeyboardTypeAlphabet;
        usernameTxt.keyboardAppearance =UIKeyboardAppearanceAlert;
        usernameTxt.autocapitalizationType =UITextAutocapitalizationTypeWords;
        usernameTxt.autocorrectionType =UITextAutocorrectionTypeNo;
        
       UITextField *passwordTxt = [loginAlerttextFieldAtIndex:1];
        passwordTxt.clearButtonMode =UITextFieldViewModeWhileEditing;
        passwordTxt.keyboardType =UIKeyboardTypeAlphabet;
        passwordTxt.keyboardAppearance =UIKeyboardAppearanceAlert;
        passwordTxt.autocapitalizationType =UITextAutocapitalizationTypeWords;
        passwordTxt.autocorrectionType =UITextAutocorrectionTypeNo;
    }

    [loginAlert show];
}
看看点击后的效果,额,不会旋转,见谅啊



在代理中处理用户交互后的事件。

#pragma mark - UIAlertViewDelegate
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
   //ok
   if (buttonIndex==1) {
        
       NSString *username = [[alertView textFieldAtIndex:0] text];
       NSString *password = [[alertView textFieldAtIndex:1] text];
       if ([self isInvalidInput:username andText:password]) {
            NSMutableString *sql = [NSMutableStringstringWithFormat:@"%@",@"WHERE name = '"];
            [sqlappendFormat:@"%@",username];
            [sql appendFormat:@"' AND password = '"];
            [sqlappendFormat:@"%@' ",password];
            
            //查询数据库中是否已经有这个用户了
           User *u = (User *)[UserfindFirstByCriteria:sql];
           if (u) {
                alertView.message =@"数据库中已有此用户,请重新输入";
                [alertViewtextFieldAtIndex:0].text =@"";
                [alertViewtextFieldAtIndex:1].text =@"";
                [[alertView textFieldAtIndex:0]becomeFirstResponder];
                [indicatorstartAnimating];
                [selfperformSelector:@selector(finishIndicator)withObject:nilafterDelay:1.0f];
            }else{
               User *user = [[Useralloc] init];
                user.name = username;
                user.password = password;
                [usersave];
                
                [indicatorstartAnimating];
                [selfperformSelector:@selector(successRegister)withObject:nilafterDelay:1.0f];
            }
        }
       //cancel
    }elseif(buttonIndex==0){
        //用户注册成功的alert
       if (alertView.tag ==1000) {
            [alertViewrelease];
        }
    }
}
这边顺便提一下模态进度指示器吧,在这里,我的效果是,不管用户输入的正确不正确,警告框都会消失,出现一个模态指示器,大概一秒钟,表示正在处理(我这里实在查询数据库什么的,嘿嘿),处理结束,显示你输入的是否正确,如果输入空值或者已有这个用户了,就显示对应的错误,并且再次显示警告框让你重新输入


看效果,中间那个灰色的菊花

主要是这个方法 [selfperformSelector:@selector(finishIndicator)withObject:nilafterDelay:1.0f];


看成功不成功两个处理

- (void)finishIndicator{
    [indicator stopAnimating];
    [loginAlert show];
}

- (void)successRegister{
    [indicator stopAnimating];
    UIAlertView *sucessAlert = [[UIAlertView alloc]
                                initWithTitle: nil
                                message:@"注册成功,请登录"
                                delegate:self
                                cancelButtonTitle:@"OK"
                                otherButtonTitles:nil, nil];
    sucessAlert.tag = 1000;    
    [sucessAlert show];
}

- (BOOL)isInvalidInput:(NSString *)name andText:(NSString *)pwd{
    if (name == nil || [name isEqualToString:@""]) {
        loginAlert.message = @"名字不能为空,请重新输入";
        [loginAlert textFieldAtIndex:0].text = @"";
        [[loginAlert textFieldAtIndex:0] becomeFirstResponder];
         [indicator startAnimating];
        [self performSelector:@selector(finishIndicator) withObject:nil afterDelay:0.5f];
        return NO;
    }
    if (pwd == nil || [pwd isEqualToString:@""]) {
        loginAlert.message = @"密码不能为空,请重新输入";
        [loginAlert textFieldAtIndex:1].text = @"";
        [[loginAlert textFieldAtIndex:0] resignFirstResponder];
        [[loginAlert textFieldAtIndex:1] becomeFirstResponder];
         [indicator startAnimating];
        [self performSelector:@selector(finishIndicator) withObject:nil afterDelay:0.5f];
        return NO;
    }
    return YES;
}

看看不成功之后出现的提醒输入用户名


差不多就是到这里,中间对于数据库的操作就忽略吧偷笑





        
运放专题:运算放大电路中的相位补偿 的方法 阅读详情

相关推荐

Linux单独编译设备树,开发者分享 | Petalinux 工程中设备树的介绍

本文来自XILINX嵌入式产品应用工程师 Terry Ni设备树是 Petalinux kernel 的关键组件,接下来以 2020.1 版本为例,为大家介绍一下在Xilinx Petalinux 工程中的设备树是如何产生,配置以及修改的。Petalinux 工程中设备树的位置当我们创建了一个 petalinux 工程后(以zcu102为例),在编译的时候,会自动生成对应的设备树文件。这些设备树的...

weixin_28877107的博客 2590

IOS 警告框 (UIAlertView)的使用方法

1.普通警告框 IOS的SDK中提供了一个方便的类库UIAlertView,配合着不同参数来使用此类可以做出大多数的警告框,如下代码是IOS最简单的警告框。 1 UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"你好" message:@"我是普通警告框" delegate:nil cancelButtonTitl...

weixin_33704591的博客 7284

科研绘图避坑指南:用PyMol制作期刊级蛋白-配体相互作用图(含氢键显示技巧)

本文是一份专业的科研绘图避坑指南,详细讲解如何利用PyMol软件制作符合期刊发表标准的蛋白-配体相互作用图。文章重点分享了从构图逻辑、精准选择到氢键等相互作用的艺术化表达技巧,并提供了视觉优化与期刊适配的终极参数设置,帮助科研人员产出兼具科学严谨性与视觉美感的专业图表。

weixin_29292431的博客 270

警告框和操作表(IOS开发)

警告框(AlertView)时模态的,不关闭它就不能做其它事情,所以不是下面几种情况不应该随便使用。 1、应用不能继续执行。 如内存不足,没有网络。一般仅仅须要一个button。 2、询问还有一个解决方式。 不能执行时,询问能否够用3G网络。 3、询问对操作的授权。 涉及到訪问隐私信息的时候,须要用户授权,如位置、相冊等。 操作表(ActionSheet)能...

aofan9566的博客 130

达梦慢sql和统计信息收集

各计划节点的执行顺序为:缩进越多的越先执行,同样缩进的上面的先执行,下面的后执行,上下的优先级高于内外。在建立索引的时候,要考虑索引的最左匹配原则(在使用 SQL 语句时,如果 where 部分的条件不符合最左匹配原则,可能导致索引失效,或者不能完全发挥建立的索引的功效);执行计划是 SQL 语句的执行方式,由查询优化器为语句设计的执行方式,交给执行器去执行。生产系统中,对于频繁变动的数据表,多次执行计划可能会出现不一致的问题,这往往是由于统计信息不准导致的,索引定期收集统计信息就很有必要了。

m0_37680131的博客 1714

一步一步教你写股票走势图——K线图一(概述)

股票分时图部分已经开发完毕,受到了广大开发者的好评!界面、功能都挺完美,解决了好一些MP开发者的问题,博主甚是欣悦,更有动力去开源K线图。这里说一下,如果有问题直接留言或者发邮件,github上个人信息有邮件,我看到基本都会回复,博主不加qq的,体谅O(∩_∩)O。分析好了,废话不多说,我们分析下K线图吧,首先我们看下自选股K线图的效果吧效果还是很赞的,经过分时图的研究后,博主越来越确信自选股用的应

体验Android编程之美 3万+

android ios 对比 组件_手机端iOS&Android模态界面对比【2019新版】

在日常工作中,偶尔会谈及到“模态”和“非模态”,因此做了一些调研和思考 ,分享给大家。Part1 如何理解“模态”和“非模态”?先看一下维基百科对于“模态窗口” (Modal window)的解释:“在计算机应用程序的用户界面设计中,模态窗口是从属于主窗口的图形控制元素。它创建一种样式,使主窗口禁用但保持可见,模态窗口作为子窗口展示在其上方。用户必须与模态窗口进行交互,才能返回父应用程序...

weixin_30260057的博客 437

基于YOLOv5的仪表读数识别系统:从检测到识别的完整解决方案

随着工业自动化水平的不断提高,仪表读数识别技术在电力系统、石油化工、智能制造等领域发挥着越来越重要的作用。本文提出了一种基于YOLOv5的仪表自动读数识别系统,该系统能够有效区分指针式和数字式仪表,并实现高精度的读数识别。我们详细介绍了系统的整体架构、数据集构建、模型训练策略以及用户界面设计,并提供了完整的代码实现。实验结果表明,本系统在仪表检测和读数识别任务上均取得了优异的表现,为工业现场的自动化监控提供了可靠的技术支持。关键词:仪表读数识别;YOLOv5;目标检测;深度学习;工业自动化。

YOLO 678

警告框和操作表(ActionSheet)

iOS 开发中,应用程序如何实现与用户的交流呢?警告框和操作表就是为此设计的。 警告框时UIAlertView创建的,用于为用户以警告或提示,最多有两个按钮,超过两个就应该考虑使用操作表。由于在iOS中,警告框是”模态“(表示的是不关闭它就不能做别的事情),因此不应该随意使用,一般情况下,警告框的使用场景有如下几个: -应用不能继续进行。例如,无法获得网络数据或者功能不能完成的时候,给用户一个

qq_28884869的博客 1514

如何解决Dify重新部署(升级到最新版)后出现的Setup failed: PermissionDenied等问题

重新部署(升级)Dify后遇到Permission denied错误?🚫 本文详细分析了这个问题的原因🔐,并提供了完整的解决步骤来修复这个问题✨

XiaoqiangClub的博客 1654

JAVA:Spring Boot 集成 Forest 优雅的 HTTP 客户端

Forest是一个优雅的Java HTTP客户端框架,通过注解式声明简化HTTP接口调用。它支持多HTTP客户端、自动参数绑定、序列化、重试机制和拦截器等功能。本文演示了如何在Spring Boot中集成Forest,包括配置、接口定义和调用示例,还展示了POST请求、文件上传等常见场景。相比传统HTTP客户端,Forest具有声明简洁、功能完善的特点,特别适合微服务调用和第三方API对接,能显著提升开发效率和代码可维护性。

木头 427

iOS之模态情境

重要:这是针对于正在开发中的API或技术的预备文档(预发布版本)。虽然该文档在技术精确度上经过了严格的审核,但并非最终版本,仅供苹果开发者计划的注册会员使用。苹果提供这份机要文档的目的,是帮助你按照文中描述的方式对技术的选择及界面的设计开发进行规划。这些信息有可能发生变化,届时,你的设计开发方式需要基于

诠释完美 1391

CMCC-IPC-A410串口刷机救砖教程

《CMCC-IPC-A410摄像头串口刷机指南》摘要 本指南针对2018年前老款CMCC-IPC-A410摄像头变砖/升级失败的情况,提供串口刷机方案。需准备CH340G串口模块、杜邦线、海康V5.5.82固件等工具。操作包含硬件连接(TX/RX交叉接线)、115200波特率终端配置、CTRL+U进入刷机模式,通过UPF格式化、tftp传输固件、update写入等步骤完成修复。刷机后设备恢复未激活状态,需重置密码,原定制功能可能失效。整个过程需稳定供电,耗时约15-20分钟,注意此操作将使原厂保修失效。(1

海康威视技术支持 1845

iOS警告框和操作表

应用如何与用户交流呢?   警告框(AlertView)和操作表(ActionSheet)就是为此而设计的。   本文案例的原型草图如图3-48所示,其中有两个按钮“Test警告框”和“Test操作表”,点击“Test警告 框”按钮时弹出警告框,它有两个按钮。当点击“Test操作表”按钮时,屏幕下方将滑出操作表。    一.警告框AlertView    警告框是UIAlertView创

Chars 667

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

android 底部弹窗_APP控件:模态弹窗与非模态弹窗

弹窗的定义:为了让用户回应,需要用户与之交互的窗口。模态弹窗:打断用户当前的操作行为(重)且用户必须进行功能操作才会返回当前行为。非模态弹窗:不会影响用户操作,用户可以不与回应,通常有时间限制,出现一段时间就会自动消失。弹窗分类:1、Alerts/Dialog:警告框与对话框紧急状况,打扰用户的行为。剖析:iOS中警告框称之为Alerts,作用是用来传达重要信息,并伴随着...

weixin_39532699的博客 813

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

iOS之警告框和操作表

为什么80%的码农都做不了架构师?>>> ...

weixin_34319999的博客 127

《iOS Human Interface Guidelines》——Modal Contexts

本文翻译自苹果官方文档《iOS Human Interface Guidelines》——Modal Contexts,讲解模式化内容

Minecraft 1044

app浮层html,App设计之五:弹窗与浮层

之前在一篇文章里抛出来一个关于弹窗与浮层的问题,当时的背景是这样的,微信和京东在关于密码错误时采用的提示方式是完全不同的。微信采用的是警告框,而京东采用的则是浮层,由于当时自己也是心存疑惑,所以后来查看了一些资料和文章,于是就有了这篇文章。至于这两种方式哪个更合理一点,现在依然没有得出来结论。在iOS 9 人机界面指南中关于不需要使用警告框的情况中有这么一条:若使用警告框来告知用户发生了无法解决的...

weixin_29001683的博客 1831

模态弹窗与非模态弹窗

在手机app应用中各种格式的弹窗效果相信大家都看过,也可能反感过某些弹窗,本文就来谈谈关于app弹窗设计以及弹窗的适用情景。 一、弹窗的定义1、弹窗作用 弹窗是为了让用户回应,需要用户与之交互的窗口。 非模态弹窗一般被设计成用来告诉用户信息内容,而模态弹窗除了告诉用户信息内容外还需要用户进行功能操作。 2、模态弹窗 会打断用户的操作行为,强制用户必须进行操作,否则不可以进行其他操作...

qq_43077362的博客 2541

`UIAlertController` 是 iOS 开发中用于创建和管理警报框、操作表等提示界面的类,在 iOS 8 及之后的版本中引入

是一个功能强大的工具,用于在 iOS 应用中显示警告框和操作表。通过简单的配置,开发者可以轻松实现用户交互,提升应用的用户体验。

[Blog][Domain] programb.blog.youkuaiyun.com 2109

ios云信不能全屏_iOS和Android规范解析——确认弹框、全屏弹框和模态视图

今天介绍三个控件,前两个是Material Design(简称MD,下同)规范中的确认弹框(Confirmation Dialog)和全屏弹框(Full-screen Dialog),后一个是iOS规范中的模态视图(Modal View)。下面先说MD中的两个。Google Material Design Guideline确认弹框,是需要用户明确地选择一个选项的弹窗。比如设定手机铃声时,会需要你...

weixin_39866817的博客 260

如何用CFAlertViewController快速实现自定义iOS警告框?3分钟上手教程

想要为你的iOS应用添加专业且独特的警告框和操作表吗?CFAlertViewController是你的终极解决方案!这个强大的iOS库让你可以轻松创建高度自定义的警告框、操作表和通知,摆脱原生UIAlertController的限制,为你的应用增添专业触感。🎯 ## 什么是CFAlertViewController? CFAlertViewController是一个高度可配置的iOS库,它提

gitblog_00577的博客 399
上一篇: mac下安装使用brewhome安装nginx
下一篇: UIFont字体大全
我是一只懒虫
博客等级 码龄17年 147粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值