当用户按下我的“导入”按钮时,他们必须能够输入一个URL,然后他们可以“确定”或“取消”。
我该怎么做?
显然我可以创建一个包含文本字段和2个按钮的新视图。但这似乎过度编码。
我找到的一个解决方案是将UITextField“黑客入侵”到UIAlertView:http://iphone-dev-tips.alterplay.com/2009/12/username-and-password-uitextfields-in.html
这看起来很难看。这显然是一个黑客。
任何人都可以提供更好的解决方案(甚至更好地实现相同的解决方案路径)吗?
答案 0 :(得分:2)
OK经过大量的挖掘,结果就是这样。
首先,在SO的搜索中加入'UITextField UIAlertView'可以获得数十次点击。
事实证明有一种方法可以执行此操作,Need new way to add a UITextField to a UIAlertView但它是私有API:|
几乎所有其他解决方案都涉及黑客UIAlertView,这很难看:
http://junecloud.com/journal/code/displaying-a-password-or-text-entry-prompt-on-the-iphone.html
http://iphone-dev-tips.alterplay.com/2009/12/username-and-password-uitextfields-in.html
https://github.com/josecastillo/EGOTextFieldAlertView/
How to move the buttons in a UIAlertView to make room for an inserted UITextField?
^ MrGando的答案很简单
http://iphonedevelopment.blogspot.com/2009/02/alert-view-with-prompt.html
Getting text from UIAlertView
我找到的唯一合适的解决方案(即从头开始编写UIView)就在这里:https://github.com/TomSwift/TSAlertView
这就是全部:
- (IBAction) importTap
{
TSAlertView* av = [[[TSAlertView alloc] init] autorelease];
av.title = @"Enter URL";
av.message = @"";
[av addButtonWithTitle: @"Ok"];
[av addButtonWithTitle: @"Cancel"];
av.style = TSAlertViewStyleInput;
av.buttonLayout = TSAlertViewButtonLayoutNormal;
av.delegate = self;
av.inputTextField.text = @"http://";
[av show];
}
// after animation
- (void) alertView: (TSAlertView *) alertView
didDismissWithButtonIndex: (NSInteger) buttonIndex
{
// cancel
if( buttonIndex == 1 )
return;
LOG( @"Got: %@", alertView.inputTextField.text );
}
和Presto!
答案 1 :(得分:0)
答案 2 :(得分:0)
我在博客中创建了一篇关于“如何从XIB向UIAlertView添加UITextField”主题的帖子。使用XIB添加比纯编码更容易。您可以在自定义的小视图中添加任何内容,然后使用1行代码将小视图添加到AlertView中。请参阅以下链接。
http://creiapp.blogspot.com/2011/08/how-to-add-uitextfield-to-uialertview.html