IOS:Show 仅在 UISlider 更改其值时提醒一次

IOS:Show alert only once if UISlider changes its value

我正在执行 uislider 的应用程序功能,当用户滑动它向前移动的滑块并改变它在 label.I 中的值时,已经为此

给出了这样的操作
- (IBAction)sensivity:(UISlider*)sender
{
    self.senlabel.text =[NSString stringWithFormat:@"%d", (int)sender.value];
} 

到目前为止一切正常,但我需要在用户第一次开始点击滑块时显示警报视图。如果用户单击确定,那么它的标签应该更改滑块值,如果取消它应该显示一些默认值。 需要的关键点:

  1. 如果用户点击第二次警报,则仅显示一次警报现在应显示
  2. 如果在警报视图上单击“确定”,则只有滑块会更改
  3. 如果在警报视图上单击取消,则滑块不应更改其值

1) 查看dispatch_once API。查看 this link

2) 和 3) 在实例变量中抛出警报之前保存滑块的值。将您的 class 设置为 UIAlertView 的委托。如果点击取消按钮,将滑块设置回保存的值。如果点击确定按钮(您必须在创建警报时指定),则什么也不做。

有关 UIKit 入门,请参阅 Ray Wenderlich 的 site

这是你的答案:

> - (IBAction)valueChanged:(UISlider *)sender
{
static dispatch_once_t onceToken;

dispatch_once (&onceToken, ^{

    UIAlertController * alert=   [UIAlertController
                                  alertControllerWithTitle:@"Title"
                                  message:@"Your custom message"
                                  preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction* cancel = [UIAlertAction
                         actionWithTitle:@"Cancel"
                         style:UIAlertActionStyleDefault
                         handler:^(UIAlertAction * action)
                         {
                             //Do some thing here
                             [alert dismissViewControllerAnimated:YES completion:nil];
                             return ;

                         }];
    [alert addAction:cancel];

    UIAlertAction* ok = [UIAlertAction
                         actionWithTitle:@"OK"
                         style:UIAlertActionStyleDefault
                         handler:^(UIAlertAction * action)
                         {
                             //Do some thing here
                             [alert dismissViewControllerAnimated:YES completion:nil];

                         }];
    [alert addAction:ok];

    [self presentViewController:alert animated:YES completion:nil];

});

}

我宁愿让你的 viewController 成为 UISlider 的代表,并自己管理与 show/hide 警报相同的状态。

检查需要实现的 UISliderDelegate 方法(如果不实现,编译器会报错)。

@interface YourViewController : UIViewController <UIScrollViewDelegate>