gpt4 book ai didi

iphone - 在 iPhone 上获取文本输入弹出对话框的简单方法是什么

转载 作者:IT王子 更新时间:2023-10-29 07:28:10 26 4
gpt4 key购买 nike

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

最佳答案

在 iOS 5 中,有一种新的简单方法可以做到这一点。我不确定实现是否完全完成,因为它不像 UITableViewCell 那样优雅,但它应该确实可以解决问题,因为它现在已成为 iOS API 的标准支持。为此,您不需要私有(private) 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];

这会呈现一个像这样的 alertView(屏幕截图取自 XCode 4.2 中的 iPhone 5.0 模拟器):

example alert with alertViewStyle set to UIAlertViewStylePlainTextInput

当按下任何按钮时,常规委托(delegate)方法将被调用,您可以像这样提取 textInput:

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

这里我只是 NSLog 输入的结果。在生产代码中,您可能应该将指向 alertView 的指针作为全局变量保留,或者使用 alertView 标记来检查委托(delegate)函数是否被适当的 UIAlertView 调用,但对于本示例,这应该没问题。

您应该查看 UIAlertView API您会看到定义了更多样式。

希望这对您有所帮助!

-- 编辑--

我稍微玩了一下 alertView,我想它不需要声明完全可以根据需要编辑 textField:您可以创建对 UITextField 的引用并正常编辑它(以编程方式)。为此,我按照您在原始问题中指定的方式构建了一个 alertView 。迟到总比不到好,对吧:-)?

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];

这会产生此警报:

UIAlertView that uses the UIAlertViewPlainTextInput alertStyle to ask a user name

您可以使用与我之前发布的相同的委托(delegate)方法来处理输入的结果。我不确定你是否可以阻止 UIAlertView 关闭(没有 shouldDismiss 委托(delegate)函数 AFAIK)所以我想如果用户输入无效,你必须提出一个新的警报(或只是重新显示这个)直到输入正确的输入。

玩得开心!

关于iphone - 在 iPhone 上获取文本输入弹出对话框的简单方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6319417/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com