我对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属性吗?
答案 0 :(得分:1)
尝试将textfield委托设置为self
[[textEntryBox textFieldAtIndex:0] setDelegate:self]
并实现此方法:
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
[textField setText:@""];
}
我也有一个带有textField的UIAlertView可以填入我的应用程序,它适用于我
答案 1 :(得分:0)
使用警报视图可能有点多了。如果您使用主 - 细节范例,只需按一个新的视图控制器,您可以输入您的值,这可能会更容易。