3

我一直在使用UIPickerView,我的问题很简单,如何在显示选择器视图时禁用视图,以便我们可以确保用户不会更改视图中的任何内容。我尝试过setuserInteractinEnabled: 方法,但它也禁用了选择器视图..有什么想法..?

4

7 回答 7

1

我不得不做一些类似的事情,并将 an 子类UIActionSheet化为它添加一个选择器视图。当 Action Sheet 启动时,您无法与底层视图交互。

您可以在此处找到一些关于如何将 a 添加UIPickerView到的示例UIActionSheet,例如如何在 UIActionSheet 中添加 UIPickerView

于 2012-10-22T09:47:52.883 回答
1

你有几个选择:

  1. 如果您使用的是 Ipad,则在弹出窗口中显示选择器:Popover
  2. 如果您使用的是 Iphone,请将其显示在操作表 (UIActionSheet) 中:操作表
  3. 使用当前模态视图控制器显示选择器

这 3 个选项可以阻止父视图触摸事件。

于 2012-10-22T09:49:15.083 回答
1

取一个UIView名字 viewBack 如下所示

@interface ViewController : UIViewController{
    UIView *viewBack;
}

viewDidLoad:方法中,只需定义这个 viewBackwith 框架,即

- (void)viewDidLoad
{
        viewBack = [[UIView alloc] initWithFrame:CGRectMake(95, 230, 130, 40)];
        viewBack.backgroundColor = [UIColor blackColor];
        viewBack.alpha = 0.7f;
        viewBack.layer.masksToBounds = NO;
        viewBack.layer.cornerRadius = 8; 
        viewBack.hidden =YES;
}

当您想UIPickerView在该方法上显示当时的显示屏幕时,像这样..

-(IBAction)btnPickerViewOpen_Clicked:(id)sender{ 
         viewBack.hidden = NO;
        [self.view bringSubviewToFront:viewBack];
        [self.view bringSubviewToFront:yourPickerView];
}

当你想隐藏UIPickerView当时使用波纹管流程......

-(IBAction)btnPickerViewClosed_Clicked:(id)sender{ 
         viewBack.hidden = YES;
        // also hide pickerview with your requirement
}

我希望这可以帮助你...

于 2012-10-22T09:56:46.033 回答
0

我通常会添加额外的具有 50% 透明度和黑色背景的 UIView - 这解决了三个问题:

  • 自定义视图(pickerview 或任何其他用户输入字段)
  • 背景变暗 - 让用户注意到需要做什么
  • 仅在pickerview/文本输入/等上可用的用户交互
于 2012-10-22T09:50:47.160 回答
0

您只需要尝试@Rene Jennrich 的答案.. 您需要查看一些示例.. 如果您愿意,请尝试此代码..

    UIActionSheet *inputActionSheet = [[UIActionSheet alloc] initWithTitle:nil 
                                                   delegate:nil
                                          cancelButtonTitle:nil
                                     destructiveButtonTitle:nil
                                          otherButtonTitles:nil];
    [inputActionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];

    UIToolbar *pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0,320,40)];
    [pickerToolbar sizeToFit];
    pickerToolbar.barStyle = UIBarStyleBlackTranslucent;

    NSMutableArray *barItems = [[NSMutableArray alloc] init];

    UIBarButtonItem *cancelBtn = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelButtonPressed:)];
    [barItems addObject:cancelBtn];
    UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
    [barItems addObject:flexSpace];
    UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(doneButtonPressed:)];
    [barItems addObject:doneBtn];
    [pickerToolbar setItems:barItems animated:YES];
    [inputActionSheet addSubview:pickerToolbar];

    UIPickerView fontPickerView = [[UIPickerView alloc]initWithFrame:CGRectMake(0, 40, 0, 0)];
    fontPickerView.showsSelectionIndicator = YES;
    [fontPickerView setTag:1];
    [fontPickerView setDelegate:self];
    [fontPickerView setDataSource:self];
    [inputActionSheet addSubview:fontPickerView]; 
    [inputActionSheet showInView:[[UIApplication sharedApplication] keyWindow]];
    [inputActionSheet setBounds:CGRectMake(0, 0, 320, 485)];
于 2012-10-22T10:07:31.407 回答
0

我遇到过同样的问题。当我点击里面的pickerview时,UIPickerView后面的按钮会采取行动,尽管按钮不可见,只有pickerview可见。我使用按钮操作视图的隐藏属性对其进行了管理。像

  @IBAction func tapPrivacyPolicy(_ sender: Any) {
    if viewDatePicker.isHidden == false { // means UIPickerView is Visible
          return
    }
   //do other work 
}
于 2019-11-09T12:16:04.537 回答
0

要禁用选择器被点击:

fooPicker.isUserInteractionEnabled = false

于 2020-12-15T22:45:00.900 回答