如何在使用Uipickerview时禁用视图



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

我必须做类似的事情,然后对UIActionSheet进行了 CC_3以在其上添加picker视图。当动作表启动时,您无法与基础视图进行交互。

您可以在此处找到一些示例,因此如何将UIPickerView添加到UIActionSheet,例如如何在uiactionsheet中添加uipickerview

您有几个选择:

  1. 如果您使用的是iPad,请在弹出窗口中显示选择器:popover
  2. 如果您使用的是iPhone:Action Sheet
  3. 使用当前的模态视图控制器显示选择器

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

@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
}

我希望这对您有帮助...

我通常会添加50%透明度和黑色背景 - 解决三个问题:

  • 自定义视图(Pickerview或任何其他用户输入字段)
  • 昏暗的背景 - 以便用户注意到需要完成的操作
  • 仅在pickerview/text Input/etc etct
  • 上可用的用户互动

您只需要尝试@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)];

我也有同样的问题。当我在内部挖掘时,Uipickerview后面的按钮采取了行动,尽管看不见按钮只能看到pickerview。我已经使用"按钮操作"视图的隐藏属性对其进行了管理。喜欢

  @IBAction func tapPrivacyPolicy(_ sender: Any) {
    if viewDatePicker.isHidden == false { // means UIPickerView is Visible
          return
    }
   //do other work 
}

使选择器被单击:

fooPicker.isUserInteractionEnabled = false

最新更新