【问题标题】:cannot dismiss uidatepicker using uitapgesturerecognizer无法使用 uitapgesturerecognizer 关闭 uidatepicker
【发布时间】: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


【解决方案1】:

self.tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissDatePicker:)]; 而不是self.tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self.view action:@selector(dismissDatePicker:)]; 您为此手势添加了目标self.view,但您应该将其更改为self

   self.tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissDatePicker:)];
    self.tapGestureRecognizer.delegate =self;
    self.tapGestureRecognizer.numberOfTapsRequired = 1;
    [self.view addGestureRecognizer:self.tapGestureRecognizer];

我认为这对你会有帮助。

【讨论】:

    猜你喜欢
    • 2021-12-05
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多