我想要得到用户名.一个简单的文本输入对话框.有什么简单的方法可以做到这一点吗?

推荐答案

在iOS5中,有一种新的、easy的方法可以做到这一点.我不确定这个实现是否完全完成了,因为它还没有像UITableViewCell那样优雅,但它应该可以做到这一点,因为它现在是iOSAPI中支持的标准.为此,您不需要私有API.

UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"This is an example alert!" delegate:self cancelButtonTitle:@"Hide" otherButtonTitles:nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
[alert show];
[alert release];

这将呈现如下的alert 视图(屏幕截图取自XCode4.2中的iPhone 5.0模拟器):

alertViewStyle设置为UIAlertViewStylePlainTextInput的示例alert

当按下任何按钮时,将调用常规委托方法,您可以按如下方式提取textInput:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 
    NSLog(@"Entered: %@",[[alertView textFieldAtIndex:0] text]);
}

在这里,我只记录输入的结果.在生产代码中,您可能应该保留一个指向alert tView的指针作为全局变量,或者使用alert tView标记来判断委托函数是否由相应的UIAlertView调用,但对于本例来说,这应该是可以的.

你应该看看UIAlertView API,你会发现还有更多的风格定义.

希望这有帮助!

--编辑--

我只是稍微玩弄一下alert tView,我想它不需要宣布完全可以根据需要编辑textField:您可以创建一个对UITextField的引用,然后正常地(以编程方式)编辑它. 为此,我按照您在原始问题中指定的方式构建了一个alert View.迟到总比不到好,对吧:-)?

UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Hello!" message:@"Please enter your name:" delegate:self cancelButtonTitle:@"Continue" otherButtonTitles:nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
UITextField * alertTextField = [alert textFieldAtIndex:0];
alertTextField.keyboardType = UIKeyboardTypeNumberPad;
alertTextField.placeholder = @"Enter your name";
[alert show];
[alert release];

这将生成此alert :

使用UIAlertViewPlainTextInput alertStyle询问用户名的UIAlertView

您可以使用与我前面的Poster相同的委托方法来处理输入的结果.我不确定您是否能阻止UIAlertView忽略(没有shouldDismiss委托函数AFAIK),所以我想如果用户输入无效,您必须发布一个新的警告(或者只重新show这个),直到输入正确的输入.

玩得开心!

Ios相关问答推荐

为什么Pushed View Controller在UIKit中具有导航控制器?

如何从ipad获取用户定义的设备名称,IOS版本应大于16在flutter

Jenkins node 无法运行fastlane命令-未找到命令

为什么导航栏在与Style.Page的选项卡栏一起使用时停止工作?

SwiftUI Divider过大了其父视图

一堆UIGraphics方法在iOS 17中被弃用,没有明确的替代方法?

如何根据SWIFT中的按钮点击更新文本值

如何在不将应用程序留在SwiftUI上的情况下更改语言?

SwiftUI标题/标题文本背景 colored颜色 屏幕宽度

当目标位于菜单标签内时,matchedGeometryEffect 的行为很奇怪

为什么在Actor内部使用withTaskGroupwork并行运行?

长按 SwiftUI 更改项目的顺序

CarPlay:现在播放alert 可能吗?

视图之间的 SwiftUI 过渡,没有过渡

UITableView 页脚,停止浮动内容

在 iOS 中获取设备位置(仅限国家/地区)

从 NSData 或 UIImage 中查找图像类型

在 iOS 7 上更改标签栏色调 colored颜色

文本未包含在 swift UI 中

测试目标 X 遇到错误(提前意外退出,操作从未完成 bootstrap - 不会try 重新启动