3

私は を使用してきましたUIPickerView。私の質問は簡単です。ピッカー ビューが表示されているときにビューを無効にする方法です。これにより、ユーザーがビュー内で何も変更していないことを確認できます。私は : メソッドで試しましsetuserInteractinEnabledたが、ピッカービューも無効になっています..任意のアイデア..?

4

7 に答える 7

1

私は似たようなことをしなければならずUIActionSheet、ピッカービューを追加するために をサブクラス化しました。アクション シートが起動している間は、下にあるビューを操作できません。

UIActionSheet に UIPickerView を追加する方法など、UIPickerViewをに追加する方法については、SO でいくつかの例を見つけることができます。UIActionSheet

于 2012-10-22T09:47:52.883 に答える
1

いくつかのオプションがあります:

  1. Ipad を使用している場合は、ピッカーをポップアップで表示します:ポップオーバー
  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

@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

私は通常、透明度が 50% で背景が黒の UIView を追加します。これにより、次の 3 つの問題が解決されます。

  • カスタム ビュー (pickerview またはその他のユーザー入力フィールド)
  • 薄暗い背景 - ユーザーが何をする必要があるかに気付くように
  • ピッカービュー/テキスト入力などでのみ利用可能なユーザー操作
于 2012-10-22T09:50:47.160 に答える
0

同じ問題がありました。UIPickerView の背後にあるボタンは、内部のピッカービューをタップしたときにアクションを実行しますが、ボタンは表示されませんでしたが、ピッカービューのみが表示されます。ボタンアクションのビューの非表示プロパティを使用して管理していました。お気に入り

  @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 に答える