【发布时间】:2013-04-06 12:51:08
【问题描述】:
我想使用 uidatepicker 输入日期。 我已将 UITextField 的输入视图更改为 UIDatePicker 对象。 DatePicker 正在显示,没问题。 但后来我添加了一个 UITapGestureRecognizer,这样当用户在日期选择器之外点击时,日期选择器就会隐藏。在这里,我遇到了一个例外。 我无法隐藏日期选择器。
接口文件:
@interface ViewController : UIViewController <UITextFieldDelegate>
{
UIDatePicker *anewPicker;
UITapGestureRecognizer *tapGestureRecognizer;
}
@property (weak, nonatomic) IBOutlet UILabel *labelOutlet;
@property (weak, nonatomic) IBOutlet UITextField *startTimeTxtOutlet;
@property (weak, nonatomic) IBOutlet UITextField *endTimeTxtOutlet;
@property UIDatePicker *anewPicker;
@property UITapGestureRecognizer *tapGestureRecognizer;
@end
实现文件:
@implementation ViewController
@synthesize anewPicker;
@synthesize tapGestureRecognizer;
- (void)viewDidLoad
{
[super viewDidLoad];
self.anewPicker = [[UIDatePicker alloc] initWithFrame:[self.view bounds]];
[anewPicker addTarget:self action:@selector(enteredStartDate:) forControlEvents:UIControlEventValueChanged];
self.startTimeTxtOutlet.inputView = self.anewPicker;
self.endTimeTxtOutlet.inputView = self.anewPicker;
self.tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self.view action:@selector(dismissDatePicker:)];
self.tapGestureRecognizer.numberOfTapsRequired = 1;
[self.view addGestureRecognizer:self.tapGestureRecognizer];
}
-(void)enteredStartDate:(id)sender
{
NSLog(@"start date %@",[sender date]);
}
-(void)enteredEndDate:(id)sender
{
NSLog(@"end date %@",[sender date]);
}
-(void)dismissDatePicker:(UIGestureRecognizer*)gestureRecognizer
{
//in this function i get the exception
//other functions are ok
NSLog(@"tap");
self.anewPicker.hidden = YES;
}
@end
异常:无法识别的选择器发送到实例
平台详情:
XCode 4.5.2
部署目标:6.0
基础 SDK:6.0
【问题讨论】:
-
self.tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self.view action:@selector(dismissDatePicker:)];到self.tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissDatePicker:)];? -
我复制相同的代码并通过它的工作正常yaar
-
您是否正确维护了 IBOutlet 连接?
-
是的 manohar 是正确的 检查 IBOutlet 连接是否良好?
标签: iphone ios6 uidatepicker