iOS UIAlertview清除文本并禁用确定

时间:2013-06-28 14:24:47

标签: ios uitextfield uialertview

我对iOS开发有点新意,现在正在开发一些简单的UI相关内容。我有一个UIAlertView,我在一个点上使用,允许用户输入一些文本,使用简单的取消和确定按钮。如果文本字段为空,则应禁用“确定”按钮。

我在UIAlertViewDelegate添加了一个alertViewShouldEnableFirstOtherButton函数,因此当没有文本时,OK按钮会被禁用,我还将UIAlertView的{​​{1}}设置为UITextField这是真的,所以每次显示警报时,前一个文本都会消失。这些东西中的每一个都可以完美地完成。不幸的是,似乎AlertView正在检查是否在清除文本字段之前启用“确定”按钮,因此当它们放在一起时会启用它。下面应该是重现所需的最小代码。

clearOnBeginEditing

所以,最终,我的问题是:我是否完全违背了iOS的自然方式?有一个更好的方法吗?我应该忽略-(void)viewDidLoad { textEntryBox = [[UIAlertView alloc] initWithTitle:@"Name" message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]; [textEntryBox setAlertViewStyle:UIAlertViewStylePlainTextInput]; [textEntryBox textFieldAtIndex:0].clearsOnBeginEditing = YES; } -(IBAction)functionTriggeredByOtherLogic { [textEntryBox show]; } -(BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView { if(alertView == textEntryBox) { if([[alertView textFieldAtIndex:0].text length] > 0) { return YES; } else { return NO; } } return YES; } 的{​​{1}}属性,并在显示clearsOnBeginEditing之前手动清除Text属性吗?

2 个答案:

答案 0 :(得分:1)

尝试将textfield委托设置为self

[[textEntryBox textFieldAtIndex:0] setDelegate:self]

并实现此方法:

-(void)textFieldDidBeginEditing:(UITextField *)textField
{
    [textField setText:@""];
}

我也有一个带有textField的UIAlertView可以填入我的应用程序,它适用于我

答案 1 :(得分:0)

使用警报视图可能有点多了。如果您使用主 - 细节范例,只需按一个新的视图控制器,您可以输入您的值,这可能会更容易。