2013-12-23 30 views
0

我的为我的UITableViewCell供用户选择时间。我想按UITextField显示UIDatePicker,但我的下面的代码不起作用。点击文本框仍然会显示默认的键盘。iOS:UIDatePicker在点击UITextView时不显示

EditQuotaCell.h

@interface EditQuotaCell : UITableViewCell 

@property (nonatomic, weak) id delegate; 

@property (nonatomic, strong) IBOutlet UILabel *lblTimeRange; 

@property (nonatomic, strong) IBOutlet UITextField *txtTimeStart; 
@property (nonatomic, strong) IBOutlet UITextField *txtTimeEnd; 

@property (nonatomic, strong) UIDatePicker *timePicker; 

@end 

EditQuotaCell.m

@implementation EditQuotaCell 

@synthesize lblTimeRange; 
@synthesize txtTimeStart, txtTimeEnd; 

@synthesize timePicker; 

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
{ 
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
    if (self) { 
     // Initialization code 

    } 
    return self; 
} 

- (id) initWithCoder:(NSCoder *)aDecoder 
{ 
    if(self = [super initWithCoder:aDecoder]) 
    { 
     self.timePicker = [[UIDatePicker alloc] init]; 

     self.timePicker.datePickerMode = UIDatePickerModeDate; 
     [self.timePicker setDate:[NSDate date]]; 
     [self.timePicker setMinuteInterval:30]; 

     self.txtTimeStart.inputView = self.timePicker; 
    } 

    return self; 
} 

...... 

回答

0

解决它在awakeFromNib移动设置inputView

- (void) awakeFromNib 
{ 
    self.txtTimeStart.inputView = self.timePicker; 
} 
0

请设置您的选择器视图作为输入查看您的文本字段中的viewDidLoad

txtTimeStart.inputView = timePicker;

+0

确实。但是因为这是一个'UITableViewCell',它没有'viewDidLoad'。我通过将它放入'awakeFromNib'来解决它。如果您可以更改答案,我可以将其标记为正确。 – chongzixin

+0

但是你可以在索引路径的行中使用它。您应该在单元格中为您的文本字段提供参考。 – jailani

+0

在我的情况下,'UIDatePicker'是在'UITableViewCell'中指定的,它与'UITableViewController'文件是分开的。 – chongzixin

0

可能是你应该viewDidLoad:方法尝试

尝试设置inputView为您UITextFieldviewDidLoad:方法

- (void)viewDidLoad 
{ 
    self.timePicker = [[UIDatePicker alloc] init]; 

    self.timePicker.datePickerMode = UIDatePickerModeDate; 
    [self.timePicker setDate:[NSDate date]]; 
    [self.timePicker setMinuteInterval:30]; 

    self.txtTimeStart.inputView = self.timePicker; 
}