UIAlertViewStylePlainTextInput - 程序继续,无需等待用户输入文本

时间:2012-02-16 06:21:38

标签: iphone objective-c cocoa-touch

我有点卡在UIAlertViewStylePlainTextInput上。 (我的代码太长了,无法在此处发布,但这是问题所在的部分。)这一切都有效,但程序不会等到用户在继续之前输入信息。 “editName”按钮不会更改下面代码中的显示,但updateDisplay按钮工作正常(如果在按下“updateDisplay”之前按下了“editName”按钮)。在用户输入信息(或取消)之前,如何让所有事情都停止。或者还有其他一些领导能带我到我需要去的地方。 (我一直在将其余的代码放在 - (void)alertView中,但这似乎不是正确的做法)。

提前致谢。

#import "HSTestViewController.h"

@implementation HSTestViewController
@synthesize display;

NSString *newName;

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex

{    
    if (buttonIndex == 1)
    {
        newName = [[alertView textFieldAtIndex:0] text];
    }
}


- (void) getNewName;
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"You made the High Score List"
                                                message:@"Please enter your name"
                                               delegate:self
                                      cancelButtonTitle:@"Cancel"
                                      otherButtonTitles:@"Ok", nil];

    alert.alertViewStyle = UIAlertViewStylePlainTextInput;
    [alert show];
}

- (IBAction)editName:(id)sender 
{
    [self getNewName];    
    newName = display.text;
}

- (IBAction)updateDisplay:(id)sender 
{
    display.text = newName;
}

@end

1 个答案:

答案 0 :(得分:2)

将UIAlertViewDelegate添加到课程中。并实现以下委托方法。

OK按钮索引值在您的情况下为1。

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex) 
    {
        // call the method or the stuff which you need to perform on click of "OK" button.
    }
}

希望这有帮助。