2

UIAlertView在按下任一按钮(1 和 2)后,我试图保持这种状态。

单击“+”按钮或“-”按钮后,我可以看到UILabel文本增量,然后关闭UIAlertView.

这是我目前正在使用的:

#pragma Alert View Methods

-(void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated
{
        [self dismissWithClickedButtonIndex:buttonIndex animated:animated];

}

#pragma count functions
-(void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 1 || buttonIndex == 2) {
        return;
    }
    else{

        [self dismissWithClickedButtonIndex:buttonIndex animated:YES];
    }
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 1) {
        self.currentCountButtonCount++;
        [self.countAlert setMessage:[NSString stringWithFormat:@"%d",self.countButtonCount + 1]];

    }if (buttonIndex == 2) {
        self.currentCountButtonCount--;
        [self.countAlert setMessage:[NSString stringWithFormat:@"%d",self.countButtonCount - 1]];

    }
}

- (IBAction)countClick:(id)sender {


    // tallies and keeps current count number

    if (!self.currentCountButtonCount)
         self.currentCountButtonCount = 0;

   NSString *alertMessage = [NSString stringWithFormat:@"%d", self.countButtonCount];

    self.countAlert = [[UIAlertView alloc]initWithTitle:@"Count" message:alertMessage delegate:self cancelButtonTitle:@"end" otherButtonTitles:@"+",@"-", nil];

   [self.countAlert show];
}

在我的最后一个问题上,有人告诉我要自定义,这就是我现在正在尝试的方法,它仍然会关闭 UIAlert。

当标签更改直到他们触摸结束按钮时,我怎样才能保持它?

4

2 回答 2

2

您使用的是 AlertView 的默认按钮,单击该按钮后,它将自动关闭 alertview。

因此,您必须以编程方式创建按钮并将这些按钮添加到警报视图中,例如:

UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
[btn setTitle:@"+" forState:UIControlStateNormal];
[countAlert addSubview:btn ]; 

在这个 btn 上调用你的方法。

所以你必须用“+”和“-”创建两个自定义按钮。并在 AlertView 中添加该按钮。

-(void)setAlertValue:(id)sender{

    switch ([sender tag]) {
        case 1:
        {
           // currentCountButtonCount++;

            [self.countAlert setMessage:[NSString stringWithFormat:@"%d",++countButtonCount]];
        }
            break;
        case 2:
        {
            //currentCountButtonCount--;

            [self.countAlert setMessage:[NSString stringWithFormat:@"%d",--countButtonCount]];
        }
            break;
        default:
            break;
    }
}

- (IBAction)countClick:(id)sender {
// tallies and keeps current count number

    if (!currentCountButtonCount)
        currentCountButtonCount = 0;

    NSString *alertMessage = [NSString stringWithFormat:@"%d", countButtonCount];

    self.countAlert = [[UIAlertView alloc]initWithTitle:@"Count" message:alertMessage delegate:self cancelButtonTitle:@"end" otherButtonTitles:nil, nil];


    UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(10, 50, 40, 20)];
    [btn addTarget:self action:@selector(setAlertValue:) forControlEvents:UIControlEventTouchUpInside];
    [btn setBackgroundColor:[UIColor greenColor]];
    btn.tag = 1;

    [btn setTitle:@"+" forState:UIControlStateNormal];

    UIButton *btn1 = [[UIButton alloc] initWithFrame:CGRectMake(230, 50, 40, 20)];
    [btn1 addTarget:self action:@selector(setAlertValue:) forControlEvents:UIControlEventTouchUpInside];
    [btn1 setBackgroundColor:[UIColor redColor]];
    btn1.tag = 2;

    [btn1 setTitle:@"-" forState:UIControlStateNormal];
    [countAlert addSubview:btn];
    [countAlert addSubview:btn1];
    [self.countAlert show];

}

在此处输入图像描述

于 2013-07-13T07:51:49.690 回答
0

我不想在你的游行中下雨,但如果你认为警报视图是处理变量递增/递减的最佳方式,我建议你重新考虑你的设计。

UIAlertViews 用于提供瞬态信息和简化决策。一个简单的“你确定吗?” 是警报视图用法的教科书示例。

从用户的角度来看,能够修改滑块或任何其他形式的永久输入中的所有属性,然后在确定时使用警报视图(或确认屏幕)点击确认按钮会更令人欣慰。在警报视图中执行此操作不仅容易出错,而且与 iOS 其余部分的工作方式相比也违反直觉。

如果您在应用程序中适应其他形式的输入时遇到问题,请阅读如何执行动画并在需要时显示控件,将输入隐藏在 UIAlertView 中对您来说是最简单的解决方案,但不是最好的用户。

于 2013-07-15T05:27:43.263 回答