我有一个表视图控制器(等等)是用于表示一个日期的细胞。 我跟着这个帖子“ 我如何做一个模态日期选择器,只有覆盖半个屏幕? ”和我有一个很大的例外的工作-我不能让机械手消失!
我试图在登记事件UIControlEventTouchUpOutside,但似乎这不是由选择器产生的(或至少在我使用它的方式)。
我怎样才能识别出用户已完成选择日期?
此外,有没有办法直接输入到的UITextField禁用用户? 我想强迫他们使用机械臂。 我看到这个帖子“ 禁用闪烁光标的UITextField? ”,但有另一种方式?
Reagards,
- 约翰
试试这个代码..我在这里把一个日期选择器来为UITextField ..它会在右上角导航栏完成按钮..所以通过点击完成,我将用户可解除的日期选择器..另一个最好的方法是通过将具有完成按钮的日期选择器上方工具栏..改变你可以填充文本字段的日期选择器时,试试这个,将工作..希望这有助于..
看到这个计算器链接https://stackoverflow.com/a/4824319/763747这将有做过按钮,工具栏keybord上面的日期选择器..
#pragma mark -
#pragma mark - TextField Delegate
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return TRUE;
}
- (void) textFieldDidBeginEditing:(UITextField *)textField {
itsRightBarButton.title = @"Done";
itsRightBarButton.style = UIBarButtonItemStyleDone;
itsRightBarButton.target = self;
itsRightBarButton.action = @selector(doneAction:);
if ([textField isEqual:itsIncidentDateTextField])
{
itsDatePicker = [[[UIDatePicker alloc] init] autorelease];
itsDatePicker.datePickerMode = UIDatePickerModeDate;
[itsDatePicker addTarget:self action:@selector(incidentDateValueChanged:) forControlEvents:UIControlEventValueChanged];
//datePicker.tag = indexPath.row;
textField.inputView = itsDatePicker;
}
}
- (IBAction) incidentDateValueChanged:(id)sender{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMM d, yyyy"];
itsIncidentDateTextField.text = [dateFormatter stringFromDate:[itsDatePicker date]];
[dateFormatter release];
}
我用的消失的UIDatePicker不同的方法。
创建一个XIB(NIB)文件,并添加到它的UIDatePicker然后调整视图大小,使其适合只有的UIDatePicker,创建一个属性(使它强和非原子)在您的视图控制器(或者你使用任何类,当然合成)。
@property (nonatomic, strong) UIView *myDatePickerView;
@synthesize myDatePickerView;
然后创建一个loadDatePickerView方法
- (void) loadDatePickerView
{
UINib *nib = [UINib nibWithNibName:kNIBname bundle:[NSBundle mainBundle]];
NSArray *views = [nib instantiateWithOwner:self options:nil];
self.myDatePickerView = [views firstObject];
[myDatePickerView setFrame:CGRectMake(0, 318, 320, 162)];
[self.view addSubview:myDatePickerView];
}
实施UITextFieldDelegate,并在textFieldDidBeginEditing方法调用loadDatePickerView方法 ,
[self loadDatePickerView];
使函数创建一个属性,它是一个的UIDatePicker实例
@property (nonatomic,strong)
UIDatePicker *myDatePicker;
(合成当然)
现在创建了以下这样一个IBAction为 :
-(IBAction)datePickerValueChanged:(UIDatePicker *)sender
{
myDatePicker = [[myDatePickerView subviews] lastObject];
//now you can do whatever you want with the DatePicker
}
现在IBAction为连接到在XIB文件中的选择器,这样的厦门国际银行,现在是您在VC创建的UIDatePicker例如,如果你希望它消失,你可以添加一个UITapGestureRecognizer(在viewDidLoad中),并选择将是另一个IBAction为从它的这样的SuperView删除myDatePickerView:
- (void)viewDidLoad
{
[super viewDidLoad];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dropPicker:)];
[self.view addGestureRecognizer:tap];
[self datePickerValueChanged:myDatePicker];
}
-(IBAction)dropPicker:(id)sender
{
[myDatePickerView removeFromSuperview];
}