-2

在我的程序中,我的警报只显示一次,然后再次调用时不显示。

该按钮仍然取消触摸,就好像显示警报一样,但是没有警报显示。

如果能找到答案那就太好了,这是我的代码:

for (int x = 1; x <= 9; x ++) {
    if ([[defaults objectForKey:[NSString stringWithFormat:@"fav%i",x]] isEqualToString:resultButton.currentTitle] || [[defaults objectForKey:[NSString stringWithFormat:@"fav%i",x]] isEqualToString:[NSString stringWithFormat:@"%@ Converter", resultButton.currentTitle]]) {

        UIAlertView *alertThere = [[UIAlertView alloc] initWithTitle:resultButton.currentTitle message:@"Is currently in Favorites." delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil, nil];
        [alertThere show];
        [alertThere release];

        return;
    }
}

谢谢!

4

2 回答 2

3

您需要移除退货;线。

回报;行告诉你的 for 循环停止,所以只需删除它,其余的警报就会显示出来。

此外,您的代码将起诉 9 UIAlertView,这对用户不友好,我肯定会被 Apple 拒绝。因此,一旦您关闭第一个警报,第二个警报就会弹出,依此类推。

for (int x = 1; x <= 9; x ++) {
    if ([[defaults objectForKey:[NSString stringWithFormat:@"fav%i",x]] isEqualToString:resultButton.currentTitle] || [[defaults objectForKey:[NSString stringWithFormat:@"fav%i",x]] isEqualToString:[NSString stringWithFormat:@"%@ Converter", resultButton.currentTitle]]) {

        UIAlertView *alertThere = [[UIAlertView alloc] initWithTitle:resultButton.currentTitle message:@"Is currently in Favorites." delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil, nil];
        [alertThere show];
        [alertThere release];

        //return; 
    }
}

此外,请确保您的if语句值是 true,如果不是,则不会显示警报。

于 2012-06-14T00:39:51.880 回答
0

我找到的解决方案:

它在 UIGestureRecognizer 下(与循环没有任何关系)。它调用的子类有多种方法。(或类似的规定。)

基本上使用 if{} 语句只允许其中一个事件通过。

有关子类方法下的更多详细信息,请参见此处。

于 2012-08-09T15:37:58.490 回答