Ipadの[完了]ボタンでUIPickerViewを表示するという1つの問題に直面し ました。多くのリンクやブログで詳細な調査を行い、「UIActionSheetからUIPickerViewを表示する」という提案を受けました。
これに関連する投稿をたくさん見ましたが、良い答えはありませんので、重複して閉じないでください。
また、私はそれを行うためのいくつかの良いコードを取得することができました、そしてそれは私のiPhoneデバイスでうまくいきました。しかし、私はiPadデバイスで問題が見つかりました。アクションシートがフルビューで表示されていません。下のスクリーンショットをご覧ください。これが結果でした!!!
これを行うために使用されるコードは、以下に貼り付けられています。
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil
delegate:nil
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:nil];
[actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];
CGRect pickerFrame = CGRectMake(0, 40, 0, 0);
UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:pickerFrame];
pickerView.showsSelectionIndicator = YES;
pickerView.dataSource = self;
pickerView.delegate = self;
[actionSheet addSubview:pickerView];
[pickerView release];
UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Close"]];
closeButton.momentary = YES;
closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f);
closeButton.segmentedControlStyle = UISegmentedControlStyleBar;
closeButton.tintColor = [UIColor blackColor];
[closeButton addTarget:self action:@selector(dismissActionSheet:) forControlEvents:UIControlEventValueChanged];
[actionSheet addSubview:closeButton];
[closeButton release];
[actionSheet showInView:[[UIApplication sharedApplication] keyWindow]];
[actionSheet setBounds:CGRectMake(0, 0, 320, 485)];
次に、サンプルピッカーを介してgithubから優れたサンプルアプリケーションをダウンロードしました
ダウンロード後、必須のクラスのみをアプリケーションにコピーしました。
アクションシートを介してUIPickerView+Doneボタンを表示するために使用している方法を以下に説明します。
ActionStringDoneBlock done = ^(ActionSheetStringPicker *picker, NSInteger selectedIndex, id selectedValue) {
if ([myLabel respondsToSelector:@selector(setText:)]) {
[myLabel performSelector:@selector(setText:) withObject:selectedValue];
}
};
ActionStringCancelBlock cancel = ^(ActionSheetStringPicker *picker) {
NSLog(@"Block Picker Canceled");
};
NSArray *colors = [NSArray arrayWithObjects:@"Red", @"Green", @"Blue", @"Orange", nil];//picker items to select
[ActionSheetStringPicker showPickerWithTitle:@"Select a Block" rows:colors initialSelection:0 doneBlock:done cancelBlock:cancel origin:myButton];
コードの最後の行では、パラメーターをoriginとして使用しています。オブジェクト(ボタン、ラベルなど)を渡すことができます。
アクションシートは、渡されたオブジェクトとして原点を取ります。
ここで私の問題が再び発生しました:)。私は自分の条件に従って時間を選択するためにセグメント制御を使用しました。
原点パラメーターとしてmySegmentを指定すると、アクションシートの原点矢印がセグメントコントロールの中央から表示されます。選択したタブからではなく、これは非常に悪いため、貴重なユーザーに混乱をもたらします。
そのため、セグメントセクションの下に個別のラベルを追加し、前述のメソッドのoriginパラメータにラベルを付けて、問題を修正しました。
しかし、私はそれが良い修正ではないことを知っています:)
それを行う簡単な方法はありますか?
AppleはIpadでActionSheet+UIPickerView + DoneButtonをサポートしていますか?
この問題に関するヘルプはありがたいです