1

UIViewControllerUIDatePickerがあります。

ユーザーが日付を選択して UIDatePicker の外側をクリックした後、次のように UIDatePicker非表示にします。

-(void)hidePicker
{   
    [UIView beginAnimations:@"SlideOutPicker" context:nil];
    [UIView setAnimationDuration:0.5];
    [_datePicker setCenter: CGPointApplyAffineTransform(_datePicker.center, _datePicker.transform)];
    [_datePicker setTransform:CGAffineTransformMakeTranslation(0, 0)];
    [UIView commitAnimations];
}

私は試します

[_datePicker addTarget:self action:@selector(hidePicker) forControlEvents:UIControlEventTouchUpOutside];

でもイベントが起こらないので、アドバイスをもらえますか?

ユーザーが日付を変更するたびにDatePickerを非表示にするべきではないため、UIControlEventValueChangedを使用したくありません

4

2 に答える 2

1

この動作には使用できませんUIControlEventTouchUpOutside。あなたの場合、ピッカーの外側に透明なビューまたはボタンを作成し、そのアクションを設定してピッカーを閉じる必要があります。これを実現するには、このビュー/ボタンの背景色をクリア カラーに設定します。ボタンまたはビューをタップすると、ピッカーを閉じる必要がある場合があります。

UIControlEventTouchUpOutside主に、ビュー内でのタッチと指の移動に使用されます。ビューの境界の外に移動すると、イベントがトリガーされます。

于 2012-10-25T18:08:40.443 に答える
1

画面に触れるたびに、タッチが UIDatePicker の境界内にないかどうかを確認してください。? アニメーション ブロック内で可視性を変更できると思います。ところで、iOS 4+ 向けに開発している場合は、新しい (実際にはもはや新しくない) UIView クラス メソッド メソッドをアニメーションに使用することをお勧めします。これは、beginAnimations および commitAnimations ブロックの使用が Apple によって推奨されていないためです。以下は私が言及したそれらの方法です:

animateWithDuration:animations:
animateWithDuration:animations:completion:
animateWithDuration:delay:options:animations:completion:

http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW111の詳細情報

于 2012-10-25T18:31:33.733 に答える