我目前正在开发一款需要支持iOS6和iOS7的应用。
我正在创建这样的提醒:
self.newCategoryAlertView = [[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"MessageTitleNewCategory", nil)
message:NSLocalizedString(@"MessageTextNewCategory", nil)
delegate:self
cancelButtonTitle:nil
otherButtonTitles:NSLocalizedString(@"ButtonOK", nil), NSLocalizedString(@"ButtonCancel", nil), nil] autorelease];
self.newCategoryAlertView.cancelButtonIndex = 1;
self.newCategoryAlertView.tag = alertViewTypeNewCategory;
self.newCategoryAlertView.alertViewStyle = UIAlertViewStylePlainTextInput;
[self.newCategoryAlertView textFieldAtIndex:0].delegate = self;
[self.newCategoryAlertView textFieldAtIndex:0].autocapitalizationType = UITextAutocapitalizationTypeSentences;
[[self.newCategoryAlertView textFieldAtIndex:0] setReturnKeyType:UIReturnKeyDone];
[[self.newCategoryAlertView textFieldAtIndex:0] setKeyboardAppearance:UIKeyboardAppearanceDefault];
[self.newCategoryAlertView textFieldAtIndex:0].enablesReturnKeyAutomatically = YES;
[self.newCategoryAlertView show];
在委托中,我正在实施以下协议方法
- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView
{
if(alertView.tag == alertViewTypeNewCategory)
{
UITextField *textField = [alertView textFieldAtIndex:0];
if (!textField.text || [textField.text isEqualToString:@""])
{
return NO;
} else {
return YES;
}
} else {
return YES;
}
}
我的问题是在iOS6上运行左侧按钮(正如预期的那样),但在iOS7上运行时,右侧按钮被禁用。
我在委托方法中检查了cancelButtonIndex和firstOtherButtonIndex的值,它们在iOS7和iOS6中是相同的。
任何提示我做错了什么?或解决此问题的解决方法?
答案 0 :(得分:4)
似乎iOS 7已根据索引更改了按钮的排序顺序。 我已经尝试了你的代码并添加了几个按钮来检查安排顺序。
[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"MessageTitleNewCategory", nil)
message:NSLocalizedString(@"MessageTextNewCategory", nil)
delegate:self
cancelButtonTitle:nil
otherButtonTitles:NSLocalizedString(@"ButtonOK", nil), NSLocalizedString(@"ButtonCancel", nil),NSLocalizedString(@"Third Button", nil),NSLocalizedString(@"Fourth Button", nil),NSLocalizedString(@"Fifth Button", nil), nil];
对于iOS 7中的UIAlertView
第一个按钮“ButtonOK”位于顶部,但第二个按钮位于最后位置,其余按钮按升序排列,与之前的iOS版本相同。
所以,您可以使用[[UIDevice currentDevice] systemVersion]检查iOS版本并执行
if (iOS 7) {
self.newCategoryAlertView = [[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"MessageTitleNewCategory", nil)
message:NSLocalizedString(@"MessageTextNewCategory", nil)
delegate:self
cancelButtonTitle:nil
otherButtonTitles:NSLocalizedString(@"ButtonCancel", nil),NSLocalizedString(@"ButtonOK", nil), , nil] autorelease];
}else{
self.newCategoryAlertView = [[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"MessageTitleNewCategory", nil)
message:NSLocalizedString(@"MessageTextNewCategory", nil)
delegate:self
cancelButtonTitle:nil
otherButtonTitles:NSLocalizedString(@"ButtonOK", nil), NSLocalizedString(@"ButtonCancel", nil), nil] autorelease];
}