RegisterView.h
#import <UIKit/UIKit.h>
#import "HttpWrapper.h"
#import "ASIFormDataRequest.h"
#import "BSKeyboardControls.h"
#import "TermsAndConditon.h"
@interface RegisterView : UIViewController<UITextFieldDelegate,UIPickerViewDelegate,UIPickerViewDelegate,HttpWrapperDelegate,UIScrollViewDelegate,BSKeyboardControlsDelegate>{
IBOutlet UITextField *txtUserName;
IBOutlet UITextField *txtFirstName;
IBOutlet UITextField *txtLastName;
IBOutlet UITextField *txtEmail;
IBOutlet UITextField *txtPassword;
IBOutlet UITextField *txtRepassword;
IBOutlet UITextField *txtDateOfBirth;
IBOutlet UITextField *txtZip;
IBOutlet UITextField *txtGender;
IBOutlet UITextField *txtDisease;
IBOutlet UIButton *btnRegister;
IBOutlet UIView *pickerView;
IBOutlet UIPickerView *picker;
IBOutlet UIScrollView *objScroll;
IBOutlet UIButton *btnTerms;
NSString *pickerTitle;
NSMutableArray *arrPickerData;
NSMutableData *webData;
ASIFormDataRequest *request;
HttpWrapper *registrationRequest;
BOOL isDateLoad;
BOOL isGender;
BOOL isDisease;
}
@property (nonatomic, strong) BSKeyboardControls *keyboardControls;
@property(nonatomic,retain)IBOutlet UITextField *txtUserName;
@property(nonatomic,retain)IBOutlet UITextField *txtFirstName;
@property(nonatomic,retain)IBOutlet UITextField *txtLastName;
@property(nonatomic,retain)IBOutlet UITextField *txtEmail;
@property(nonatomic,retain)IBOutlet UITextField *txtPassword;
@property(nonatomic,retain)IBOutlet UITextField *txtRepassword;
@property(nonatomic,retain)IBOutlet UITextField *txtGender;
@property(nonatomic,retain)IBOutlet UITextField *txtZip;
@property(nonatomic,retain)IBOutlet UITextField *txtDateOfBirth;
@property(nonatomic,retain)IBOutlet UITextField *txtDisease;
@property(nonatomic,retain)IBOutlet UIScrollView *objScroll;
@end
Register.m
#import "RegisterView.h"
#import "AppDelegate.h"
#import "ASIFormDataRequest.h"
#import "NSString+SBJSON.h"
@interface RegisterView ()
@end
@implementation RegisterView
@synthesize keyboardControls,objScroll;
@synthesize txtFirstName,txtLastName,txtEmail,txtPassword,txtRepassword,txtUserName,txtZip,txtDateOfBirth,txtGender,txtDisease;
AppDelegate *appDelegate;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[objScroll setContentSize:CGSizeMake(320,570)];
appDelegate = [AppDelegate sharedAppDelegate];
self.title =@"Register";
NSArray *fields = @[self.txtUserName,self.txtFirstName, self.txtLastName,self.txtGender,self.txtDateOfBirth,self.txtDisease,self.txtPassword,self.txtRepassword,self.txtEmail,self.txtZip];
[self setKeyboardControls:[[BSKeyboardControls alloc] initWithFields:fields]];
[self.keyboardControls setDelegate:self];
arrPickerData =[[NSMutableArray alloc]init];
// Do any additional setup after loading the view from its nib.
}
-(void)viewWillAppear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:NO];
}
#pragma mark - HttpWrapper Delegate Methods
#pragma mark -
-(void)HttpWrapper:(HttpWrapper *)wrapper fetchDataSuccess:(NSString *)response
{
NSMutableDictionary *dicsUserInfo = (NSMutableDictionary *)[response JSONValue];
if([[dicsUserInfo objectForKey:@"message"] isEqualToString:@"Registration Successful"])
{
[appDelegate showAlertWithTitle:@"" message:[dicsUserInfo objectForKey:@"message"]];
[self.navigationController popViewControllerAnimated:YES];
}
else
{
[[AppDelegate sharedAppDelegate]showAlertWithTitle:@"" message:[dicsUserInfo objectForKey:@"message"]];
}
[appDelegate hideLoadingView];
}
-(void)HttpWrapper:(HttpWrapper *)wrapper fetchDataFail:(NSError *)error
{
[appDelegate hideLoadingView];
NSLog(@"======= fetchDataFail =======");
}
-(IBAction)onTermsClick:(id)sender
{
// TermsAndConditon *termsandcondition =[[TermsAndConditon alloc]initWithNibName:@"TermsAndConditon" bundle:nil];
// [self.navigationController pushViewController:termsandcondition animated:YES];
[btnTerms setSelected:!btnTerms.selected];
//[termsandcondition release];
}
-(IBAction)onClickRegister:(id)sender
{
[self hideKeyboard];
CGPoint bottomOffset = CGPointMake(0, 0);
[objScroll setContentOffset:bottomOffset animated:YES];
if(! [self validateForm])
{
return;
}
[appDelegate showLoadingView];
registrationRequest = [[HttpWrapper alloc] init];
registrationRequest.delegate=self;
NSMutableDictionary *paramsDict=[[NSMutableDictionary alloc]init];
[paramsDict setValue:txtUserName.text forKey:@"UserName"];
[paramsDict setValue:txtFirstName.text forKey:@"FirstName"];
[paramsDict setValue:txtLastName.text forKey:@"LastName"];
[paramsDict setValue:txtGender.text forKey:@"Gender"];
[paramsDict setValue:txtDateOfBirth.text forKey:@"Date_Of_Birth"];
[paramsDict setValue:txtPassword.text forKey:@"Password"];
[paramsDict setValue:txtEmail.text forKey:@"Email"];
[paramsDict setValue:txtDisease.text forKey:@"Disease"];
[paramsDict setValue:txtZip.text forKey:@"ZipCode"];
NSString *strUrl = [NSString stringWithFormat:@"%@?action=RegisterUser",API_URL];
[registrationRequest requestWithMethod:@"POST" url:strUrl param:paramsDict];
[btnRegister resignFirstResponder];
}
-(BOOL) validateForm
{
BOOL isValid = TRUE;
if(![txtUserName.text isEqualToString:@""])
{
if(![txtFirstName.text isEqualToString:@""])
{
if(![txtLastName.text isEqualToString:@""])
{
if(![txtEmail.text isEqualToString:@""])
{
if (![txtZip.text isEqualToString:@""])
{
if(![txtPassword.text isEqualToString:@""])
{
if ([self validateEmailWithString:txtEmail.text])
{
if ([self validateZip:txtZip.text])
{
if (btnTerms.selected)
{
if([txtPassword.text isEqualToString:txtRepassword.text])
{
return isValid;
}
else
{
[appDelegate showAlertWithTitle:@"Alert" message:@"Password Does Not Match."];
txtPassword.text=@"";
txtRepassword.text=@"";
[txtPassword becomeFirstResponder];
isValid = FALSE;
return isValid;
}
}
else
{
[appDelegate showAlertWithTitle:@"Alert" message:@"Please accept Terms and Conditions"];
isValid = FALSE;
return isValid;
}
}
else
{
[appDelegate showAlertWithTitle:@"Alert" message:@"Please Fill Up ZIP Correct"];
txtZip.text=@"";
[txtZip becomeFirstResponder];
isValid = FALSE;
return isValid;
}
}
else
{
[appDelegate showAlertWithTitle:@"Alert" message:@"Please Fill Up Email Correct"];
txtEmail.text=@"";
[txtEmail becomeFirstResponder];
isValid = FALSE;
return isValid;
}
}
}
else
{
[appDelegate showAlertWithTitle:@"Alert" message:@"Password Should Not Be Blank"];
isValid = FALSE;
[txtPassword becomeFirstResponder];
return isValid;
}
}
else
{
[appDelegate showAlertWithTitle:@"Alert" message:@"Email Should Not Be Blank"];
isValid = FALSE;
[txtEmail becomeFirstResponder];
return isValid;
}
}
else
{
[appDelegate showAlertWithTitle:@"Alert" message:@"Last Name Should Not Be Blank"];
isValid = FALSE;
[txtUserName becomeFirstResponder];
return isValid;
}
}
else
{
[appDelegate showAlertWithTitle:@"Alert" message:@"First Name Should Not Be Blank"];
isValid = FALSE;
[txtLastName becomeFirstResponder];
return isValid;
}
}
else
{
[appDelegate showAlertWithTitle:@"Alert" message:@"User Name Should not Be Blank"];
isValid = FALSE;
[txtFirstName becomeFirstResponder];
return isValid;
}
return YES;
}
-(void)GenderPickerData{
isGender = YES;
[arrPickerData removeAllObjects];
[arrPickerData addObject:@"Male"];
[arrPickerData addObject:@"Female"];
[self selectPickerFirstElement];
[picker reloadAllComponents];
}
-(void)DiseasePickerData{
isDisease = YES;
[arrPickerData removeAllObjects];
[arrPickerData addObject:@"ADHD"];
[arrPickerData addObject:@"Heart disease"];
[arrPickerData addObject:@"Hyperlipidemia"];
[arrPickerData addObject:@"Headaches"];
[arrPickerData addObject:@"Arthritis"];
[arrPickerData addObject:@"Osteoporosis"];
[arrPickerData addObject:@"Insomnia"];
[arrPickerData addObject:@"Diabetes"];
[arrPickerData addObject:@"Hypertension - high blood pressure"];
[arrPickerData addObject:@"Chronic Pain"];
[arrPickerData addObject:@"GERD heartburn"];
[arrPickerData addObject:@"BPH - enlarged prostate"];
[arrPickerData addObject:@"Asthma"];
[arrPickerData addObject:@"COPD"];
[arrPickerData addObject:@"Seizures"];
[arrPickerData addObject:@"Anxiety"];
[arrPickerData addObject:@"Depression"];
[arrPickerData addObject:@"Gout"];
[arrPickerData addObject:@"Cancer"];
[arrPickerData addObject:@"Seasonal allergies"];
[arrPickerData addObject:@"Stroke"];
[arrPickerData addObject:@"Thyroid disease"];
[self selectPickerFirstElement];
[picker reloadAllComponents];
}
-(void)selectPickerFirstElement{
pickerTitle = [arrPickerData objectAtIndex:0];
[picker selectRow:0 inComponent:0 animated:YES];
}
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
CGPoint offset = CGPointMake(0, 0);
if (textField == txtUserName)
{
offset.y = txtUserName.frame.origin.y-50;
[objScroll setContentOffset:offset animated:YES];
}
else if (textField == txtFirstName)
{
offset.y = txtFirstName.frame.origin.y-50;
[objScroll setContentOffset:offset animated:YES];
}
else if (textField == txtLastName)
{
offset.y = txtLastName.frame.origin.y-50;
[objScroll setContentOffset:offset animated:YES];
}
else if (textField == txtGender)
{
isGender = YES;
[self GenderPickerData];
[self setPickerForTextField:txtGender
Target:self
DoneSelector:@selector(onDoneTxtGender)
CancelSelector:@selector(onCancelKeyboardToolbar)];
offset.y = txtGender.frame.origin.y -50;
[objScroll setContentOffset:offset animated:YES];
}
else if (textField == txtDateOfBirth)
{
isDateLoad = YES;
[appDelegate setDatePickerForTextField:txtDateOfBirth
datePickerMode:UIDatePickerModeDate
Target:self
DoneSelector:nil
CancelSelector:nil];
offset.y =txtDateOfBirth.frame.origin.y-50;
[objScroll setContentOffset:offset animated:YES];
}
else if (textField == txtDisease)
{
isDisease = YES;
[self DiseasePickerData];
[self setPickerForTextField:txtDisease
Target:self
DoneSelector:@selector(onDoneTxtDisease)
CancelSelector:@selector(onCancelKeyboardToolbar)];
offset.y = txtDisease.frame.origin.y -50;
[objScroll setContentOffset:offset animated:YES];
}
else if (textField == txtPassword)
{
offset.y = txtPassword.frame.origin.y-50;
[objScroll setContentOffset:offset animated:YES];
}
else if (textField == txtRepassword)
{
offset.y = txtRepassword.frame.origin.y-50;
[objScroll setContentOffset:offset animated:YES];
}
else if (textField == txtEmail)
{
offset.y = txtEmail.frame.origin.y-50;
[objScroll setContentOffset:offset animated:YES];
}
else if (textField == txtZip)
{
offset.y = txtZip.frame.origin.y-50;
[objScroll setContentOffset:offset animated:YES];
}
[self.keyboardControls setActiveField:textField];
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
CGPoint bottomOffset = CGPointMake(0, 0);
[objScroll setContentOffset:bottomOffset animated:YES];
return YES;
}
-(void) hideKeyboard
{
for (id aView in objScroll.subviews) {
if([UITextField class] == [aView class])
{
UITextField *tf = (UITextField *)aView;
[tf resignFirstResponder];
}
}
}
-(void) onCancelKeyboardToolbar
{
[self.view endEditing:YES];
}
-(void)doneForTextfield:(UITextField *)textField
{
[textField resignFirstResponder];
UIDatePicker *pic = (UIDatePicker *)textField.inputView;
if(pic.datePickerMode == UIDatePickerModeDate)
textField.text = [appDelegate stringFromDate:pic.date];
else
textField.text = [appDelegate timeStringFromDate:pic.date];
}
-(void)onDoneTxtGender
{
[self doneForPickerTextfield:txtGender];
}
-(void)onDoneTxtDisease
{
[self doneForPickerTextfield:txtDisease];
}
-(void)doneForPickerTextfield:(UITextField *)textField
{
[textField resignFirstResponder];
textField.text = pickerTitle;
}
-(void) setPickerForTextField:(UITextField *)textfield
Target:(id)target
DoneSelector:(SEL)doneSelector
CancelSelector:(SEL)cancelSelector
{
textfield.inputAccessoryView = [self getNumberKeyboardToolbarWithTarget:target DoneSelector:doneSelector CancelSelector:cancelSelector];
textfield.inputView = picker;
}
#pragma mark Picker View Methods
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView {
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {
return [arrPickerData count];
}
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return [arrPickerData objectAtIndex:row];
}
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
pickerTitle = [arrPickerData objectAtIndex:row];
}
-(UIToolbar *)getNumberKeyboardToolbarWithTarget:(id)target
DoneSelector:(SEL)doneSelector
CancelSelector:(SEL)cancelSelector
{
UIToolbar* numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
numberToolbar.barStyle = UIBarStyleBlackTranslucent;
numberToolbar.items = [NSArray arrayWithObjects:
[[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:target action:cancelSelector],
[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
[[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:target action:doneSelector],
nil];
[numberToolbar sizeToFit];
return numberToolbar;
}
- (BOOL)validateEmailWithString:(NSString*)email
{
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:email];
}
- (BOOL)validateZip:(NSString *)candidate {
NSString *strZip =@"^[0-9]{5}(-[0-9]{4})?$";
// NSString *strZip =@"^(\\d{5}(-\\d{4})$";
NSPredicate *ZipTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", strZip];
return [ZipTest evaluateWithObject:candidate];
}
#pragma mark Keyboard Controls Delegate
-(void) keyboardControls:(BSKeyboardControls *)keyboardControls selectedField:(UIView *)field inDirection:(BSKeyboardControlsDirection)direction
{
CGPoint offset = field.frame.origin;
offset.x = 0;
offset.y -= 100;
offset.y+=self.objScroll.frame.origin.y;
[self.objScroll setContentOffset:offset animated:YES];
}
- (void)keyboardControlsDonePressed:(BSKeyboardControls *)keyboardControls1
{
if(isDateLoad){
[self doneForTextfield:txtDateOfBirth];
}
if (isGender) {
[self doneForPickerTextfield:txtGender];
}
if (isDisease){
[self doneForPickerTextfield:txtDisease];
}
[self.objScroll setContentOffset:CGPointZero animated:YES];
[keyboardControls.activeField resignFirstResponder];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
No comments:
Post a Comment