UIAlertView中的iOS / UITextField

时间:2011-07-18 16:17:15

标签: ios uitextfield uialertview

当用户按下我的“导入”按钮时,他们必须能够输入一个URL,然后他们可以“确定”或“取消”。

我该怎么做?

显然我可以创建一个包含文本字段和2个按钮的新视图。但这似乎过度编码。

我找到的一个解决方案是将UITextField“黑客入侵”到UIAlertView:http://iphone-dev-tips.alterplay.com/2009/12/username-and-password-uitextfields-in.html

(编辑:更好 - http://www.iphonedevsdk.com/forum/iphone-sdk-development/1704-uitextfield-inside-uialertview.html#post10643

这看起来很难看。这显然是一个黑客。

任何人都可以提供更好的解决方案(甚至更好地实现相同的解决方案路径)吗?

3 个答案:

答案 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!

enter image description here

答案 1 :(得分:0)

答案 2 :(得分:0)

我在博客中创建了一篇关于“如何从XIB向UIAlertView添加UITextField”主题的帖子。使用XIB添加比纯编码更容易。您可以在自定义的小视图中添加任何内容,然后使用1行代码将小视图添加到AlertView中。请参阅以下链接。

http://creiapp.blogspot.com/2011/08/how-to-add-uitextfield-to-uialertview.html