我对 iOS 开发有点陌生,现在正在研究一些简单的 UI 相关的东西。我有一个UIAlertView
我正在使用的一个,允许用户输入一些文本,带有简单的取消和确定按钮。如果文本字段为空白,则应禁用 OK 按钮。
我添加了UIAlertViewDelegate
一个 alertViewShouldEnableFirstOtherButton 函数,因此当没有文本时 OK 按钮将禁用,并且我还将UIAlertView
'设置UITextField
为clearOnBeginEditing
true,因此每次显示警报时之前的文本都会消失。这些东西中的每一个都可以完美地发挥作用。不幸的是,AlertView 似乎在清除文本字段之前检查是否启用 OK 按钮,因此当它们放在一起时,它会启用。下面应该是关于重现所需的最少代码。
-(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;
}
所以,归根结底,我的问题是:我在做一些完全违背自然 iOS 做事方式的事情吗?有一个更好的方法吗?我是否应该忽略 的clearsOnBeginEditing
属性UITextField
,并在显示之前手动清除 Text 属性UIAlertView
?