1

我在UIViewController上有UIDatePicker

在用户选择日期并在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];

但是事件没有发生,你能给我一些建议吗?

我不想使用UIControlEventValueChanged因为DatePicker不应该在每次用户更改日期时隐藏

4

2 回答 2

1

您不能UIControlEventTouchUpOutside用于此行为。在您的情况下,您需要在选择器之外创建一个透明视图或按钮,并为其设置操作以关闭选择器。将此视图/按钮的背景颜色设置为清晰颜色以实现此目的。在点击按钮或视图时,您可能必须关闭选择器。

UIControlEventTouchUpOutside主要用于在视图内部触摸和手指移出。在移出视图边界时,它会触发事件。

于 2012-10-25T18:08:40.443 回答
1

每次触摸屏幕时,只需检查触摸是否不在 UIDatePicker 的范围内。您是否尝试设置 hidden=YES; ? 我想你可以改变它在动画块内的可见性。顺便说一句,如果您正在为 iOS 4+ 开发,那么您最好使用新的(它们实际上不再是新的)UIView 类方法方法来制作动画,因为 Apple 不鼓励使用 beginAnimations 和 commitAnimations 块。以下是我提到的那些方法:

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 回答