hi,
I am making a booking page. I have included 3 pickers in it. I have included all the delegates required for the pickers to work but it wont rotate.
I have enabled user interaction and multitouch in the nib file. Here is my code. Please help me. :(
@interface ChooseContactsFrom : UIViewController {
IBOutlet UIPickerView *statePickup;
IBOutlet UIPickerView *paymentMethodPickup;
IBOutlet UIDatePicker *expiryDatePickup;
IBOutlet UIView *statePickupView;
IBOutlet UIView *paymentMethodPickupView;
IBOutlet UIView *expiryDatePickupView;
}
(void)viewDidLoad {
self.title = @"Choose Contacts";
//Fill in the states name/ stateArray = [[NSArray alloc]initWithObjects:@"",nil];
paymentModeArray = [[NSArray alloc] initWithObjects:@"Credit Card", @"Cash",@"Account",@"Voucher",@"Debit Card", nil];
paymentMethodPickup.frame = CGRectMake(0.0, 44.0, paymentMethodPickup.frame.size.width, paymentMethodPickup.frame.size.height);
paymentMethodPickup.userInteractionEnabled = YES;
paymentMethodPickup.multipleTouchEnabled = YES;
paymentMethodPickupView.frame = CGRectMake(0.0, 210.0, paymentMethodPickupView.frame.size.width, paymentMethodPickupView.frame.size.height);
statePickup.frame = CGRectMake(0.0, 44.0,statePickup.frame.size.width, statePickup.frame.size.height);
statePickupView.frame = CGRectMake(0.0, 210.0, statePickupView.frame.size.width, statePickupView.frame.size.height);
stateArray = [[NSArray alloc] initWithObjects:@"state1", @"state2", @"state3", @"state4", @"state5", @"state6", @"state7", @"state8", @"state9", @"state10", nil];
expiryDatePickup.frame = CGRectMake(0.0, 44.0, expiryDatePickup.frame.size.width, expiryDatePickup.frame.size.height);
expiryDatePickupView.frame = CGRectMake(0.0, 210.0, expiryDatePickupView.frame.size.width, expiryDatePickupView.frame.size.height);
[super viewDidLoad];
}
-(IBAction)back:(id)sender
{
[self dismissModalViewControllerAnimated:YES];
}
pragma mark pickerView delegates
(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView {
return 1;
}
(NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component
{
if( thePickerView == statePickup)
{
return [stateArray count];
}
else if(thePickerView == paymentMethodPickup)
{
return [paymentModeArray count];
}
else
{
return 0;
}
}
(NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if(thePickerView == statePickup)
{
return [stateArray objectAtIndex:row];
}
else if(thePickerView == paymentMethodPickup)
{
return [paymentModeArray objectAtIndex:row];
}
else
{
return @" ";
}
}
(CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{
return 50;
}
(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component
{
return 250;
}
(void)pickerView:(UIPickerView *)thepickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
if(thepickerView == statePickup)
{
state.text=[stateArray objectAtIndex:row];
}
if(thepickerView == paymentMethodPickup)
{
payment.text=[paymentModeArray objectAtIndex:row];
}
}
(void)ClearSubviews
{
//[firstName resignFirstResponder];
// [lastName resignFirstResponder];
// [email resignFirstResponder];
// [address1 resignFirstResponder];
// [address2 resignFirstResponder];
// [city resignFirstResponder];
// //[state resignFirstResponder];
// [payment resignFirstResponder];
// [creditCard resignFirstResponder];
// [expirydate removeFromSuperview];
// [statePickup removeFromSuperview];
// [paymentMethodPickup removeFromSuperview];
}
(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
// [self showPicker:textField];
//[self setViewMovedUp];
if(textField == firstName || textField == lastName || textField == email || textField == address1 || textField == address2 ||textField == city)
{
[self ClearSubviews];
//pickerToolbar.hidden = TRUE;
return YES;
}
else if(textField == payment)
{
[self ClearSubviews];
[self setViewMovedUp];
[payment setText:[paymentModeArray objectAtIndex:0]];
[self.view insertSubview:paymentMethodPickupView aboveSubview:self.view];
return NO;
}
else if(textField == state)
{
[self ClearSubviews];
[self setViewMovedUp];
[state setText:[stateArray objectAtIndex:0]];
[self.view insertSubview:statePickupView aboveSubview:self.view];
return NO;
}
else if(textField == expirydate)
{
[self setViewMovedUp];
expiryDatePickup.date = [NSDate date];
NSDate *date1 = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
NSString *strDate=[dateFormatter stringFromDate:date1];
NSString *str=[[NSString alloc] initWithString: strDate];
[expirydate setText:str];
[self.view insertSubview:expiryDatePickupView aboveSubview:self.view];
return NO;
}
else if(textField == creditCard)
{
[self ClearSubviews];
[self setViewMovedUp];
return YES;
}
else
{
[self ClearSubviews];
return YES;
}
}
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
return YES;
}
(void)textFieldDidEndEditing:(UITextField *)textField
{
if(textField == creditCard)
{
[self moveDown];
}
}
(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[firstName resignFirstResponder];
[lastName resignFirstResponder];
[email resignFirstResponder];
[address1 resignFirstResponder];
[address2 resignFirstResponder];
[city resignFirstResponder];
[creditCard resignFirstResponder];
return YES;
}
-(IBAction)textFieldDoneEditing:(id)sender
{
[sender resignFirstResponder];
}
////////-----------------------------------------------------------------------
pragma mark move screen
(void)setViewMovedUp
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
// Make changes to the view's frame inside the animation block. They will be animated instead
// of taking place immediately.
CGRect rect = [self.view frame];
// If moving up, not only decrease the origin but increase the height so the view
// covers the entire screen behind the keyboard.
rect.origin.y -= 50.0f;
rect.size.height -= 80.0f;
[self.view setFrame:rect];
[UIView commitAnimations];
}
-(void)moveDown
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
// Make changes to the view's frame inside the animation block. They will be animated instead
// of taking place immediately.
CGRect rect = [self.view frame];
rect.origin.y += 50.0f;
rect.size.height += 80.0f;
[self.view setFrame:rect];
// [UIView setBackgroundColor:[UIColor darkGrayColor]];
[UIView commitAnimations];
}
pragma mark Method to show pickers
-(void)showPicker:(UITextField *)textField {
if(textField == expirydate)
{
expiryDatePickup .date = [NSDate date];
NSDate *date1 = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
NSString *strDate=[dateFormatter stringFromDate:date1];
NSString *str=[[NSString alloc] initWithString: strDate];
[expirydate setText:str];
[self.view insertSubview:expiryDatePickup aboveSubview:self.view];
}
else if(textField == payment)
{
[payment setText:[paymentModeArray objectAtIndex:0]];
[self.view insertSubview:paymentMethodPickupView aboveSubview:self.view];
}
else if(textField == state)
{
[state setText:[stateArray objectAtIndex:0]];
[self.view insertSubview:statePickupView aboveSubview:self.view];
}
}
(IBAction)datePickerChanged:(id)sender
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
NSDate *date=expiryDatePickup.date;
formattedDateString1 = [dateFormatter stringFromDate:date];
[expirydate setText:formattedDateString1];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
unsigned int unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit;
components = [gregorian components:unitFlags fromDate:date];
[gregorian release];
}
pragma mark done and cancel methods
-(IBAction) btnCancelExpiryDate:(id)sender
{
[self moveDown];
[expirydate setText:@" "];
[expiryDatePickupView removeFromSuperview];
}
-(IBAction) btnDoneExpiryDate:(id)sender
{
[self moveDown];
[expiryDatePickupView removeFromSuperview];
expiryDatePickup .date = [NSDate date];
}
-(IBAction)cancelPaymentType:(id)sender
{
[self moveDown];
[payment setText:@" "];
[paymentMethodPickupView removeFromSuperview];
}
-(IBAction)donePaymentType:(id)sender
{
[self moveDown];
[paymentMethodPickupView removeFromSuperview];
}
-(IBAction)doneState:(id)sender
{
[self moveDown];
[statePickupView removeFromSuperview];
}
(IBAction)cancelState:(id)sender;
{
[self moveDown];
[state setText:@" "];
[statePickupView removeFromSuperview];
}