1

サブビューとしてUIScrollViewいくつかあるものがあります。UIViewsの1つで、UIViewを作成する必要がありUIButtonます。クリックUIPickerViewすると、が表示されます。ボタンをファーストレスポンダーにできる場合は、のデフォルトのアクションにより、UIScrollView上にスクロールしてUIPickerView...があります。これを達成する方法はありますか?サブクラス化する必要がありUIControlますか?

4

3 に答える 3

2

これを使用できます:

-(void)btnAction{
UITextView* uitextView = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
uitextView.inputView = thePickerView;
[self.view addSubview:uitextView];

[uitextView becomeFirstResponder];}
于 2013-10-17T19:02:40.007 に答える
1

これはボタンの追加です。この場合は _scrollView に直接、簡単に変更できます。

UIButton *btn = [[UIButton alloc] init];

// button customization

[btn addTarget:self action:@selector(showPickerView:) forControlEvents:UIControlEventTouchUpInside];

[_scrollView addSubview:btn];
[btn release]; // if non-ARC

その後、showPickerView:メソッドを実装する必要があります

- (void)showPickerView:(UIButton*)sender
{
    UIPickerView *picker = [[UIPickerView alloc] init];
    picker.tag = 998998;

    // picker customization..

    [self.view insertSubview:picker aboveSubview:_scrollView];
    [picker release]; // if non-ARC
}

ここで重要な部分は、ピッカービューから閉じる/完了ボタンが起動されたときに、ピッカーを非表示にする必要があることです。私の頭に浮かぶ最も簡単な方法は

if([self.view viewWithTag:998998] != nil) {
    [[self.view viewWithTag:998998] removeFromSuperview]
}
于 2012-12-04T08:53:12.220 に答える
0

UIPickerView を cell.picker = [[UIPickerView alloc] initWithFrame:CGRectZero]; に初期化します。サブクラス内(タップしたときにピッカーを表示したいものは何でも)。次に、そのクラスの inputView メソッドをオーバーライドし、そのメソッド内で UIPickerView を返します。このメソッドは、オブジェクトがファーストレスポンダーになったときに表示するカスタム入力ビューを設定します。キーボードのようにすべてをアニメーション化します。スクロールビューを上にスクロールするには、キーボードの場合と同じ方法でこれを処理する必要があります (これは、scrollView の contentOffset を設定することによって行われます)。これはここにあります:アップルのドキュメントリンク. オブジェクトがファーストレスポンダを辞任し、ファーストレスポンダになったときに通知があるため、ここからはかなり簡単です。キーボード通知の代わりにこれらの通知を使用し、キーボードの代わりにデフォルトの UIPickerView サイズを使用してください。

    - (void)initalizeInputView {
    self.picker = [[UIPickerView alloc] initWithFrame:CGRectZero];
    self.picker.showsSelectionIndicator = YES;
    self.picker.autoresizingMask = UIViewAutoresizingFlexibleHeight;
}


- (UIView *)inputView {
        return self.picker;
}
于 2013-08-31T20:03:30.683 に答える