iphone ERROR ! solution and EXAMPLE
Sunday, September 15, 2013
static NSString* kAppId = @"210849718975311";
In DidLoad :-
permissions = [[NSArray alloc] initWithObjects:@"read_stream", @"publish_stream",@"offline_access", nil];
[permissions retain];
facebook = [[Facebook alloc] initWithAppId:kAppId andDelegate:self];
#pragma mark -Login for Facebook
- (void)fbDidLogin
{
[facebook requestWithGraphPath:@"me" andDelegate:self];
// Save authorization information
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];
//Remove Old User detail
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"username"];
[[NSUserDefaults standardUserDefaults]removeObjectForKey:@"password"];
appDelegate.isLogin = YES;
btnLogin.hidden= YES;
btnLogout.hidden = NO;
}
-(void)fbDidNotLogin:(BOOL)cancelled
{
}
- (void)fbDidLogout
{
appDelegate.isLogin = NO;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[facebook invalidateSession];
[defaults removeObjectForKey:@"FBAccessTokenKey"];
[defaults removeObjectForKey:@"FBExpirationDateKey"];
[defaults synchronize];
NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
// NSArray* facebookCookies = [cookies cookiesForURL:[NSURL URLWithString:@"http://login.facebook.com"]];
for (NSHTTPCookie* cookie in [cookies cookies])
{
NSString* domainName = [cookie domain];
NSRange domainRange = [domainName rangeOfString:@"facebook"];
if(domainRange.length > 0)
{
[cookies deleteCookie:cookie];
}
}
btnLogout.hidden = YES;
btnLogin.hidden = NO;
}
#pragma mark - FBRequestDelegate Methods
- (void)request:(FBRequest *)request didReceiveResponse:(NSURLResponse *)response {
NSLog(@"received response");
}
- (void)request:(FBRequest *)request didLoad:(id)result {
if ([result isKindOfClass:[NSArray class]]) {
result = [result objectAtIndex:0];
}
strUser = [appDelegate removeNull:[result objectForKey:@"username"]];
[strUser retain];
strEmail = [appDelegate removeNull:[result objectForKey:@"email"]];
[strEmail retain];
strFname = [appDelegate removeNull:[result objectForKey:@"first_name"]];
[strFname retain];
strLname = [appDelegate removeNull:[result objectForKey:@"last_name"]];
[strLname retain];
UserImage *objUserImg = (UserImage *)[NSEntityDescription
insertNewObjectForEntityForName:@"UserImage"
inManagedObjectContext:appDelegate.managedObjectContext];
if ([strEmail isEqualToString:@""]) {
strEmail = [appDelegate removeNull:[[result objectForKey:@"username"] stringByAppendingString:@"@facebook.com"]];
}
objUserImg.fbUsername = [result objectForKey:@"name"];
objUserImg.fbId = [result objectForKey:@"id"];
strUserImage = [[NSString alloc] initWithFormat:@"https://graph.facebook.com/%@/picture",[result objectForKey:@"id"]];
[strUserImage retain];
strFBId = [result objectForKey:@"id"];
[strFBId retain];
NSString *str = [strFBId stringByAppendingString:@"ThaAfterParty"];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:result forKey:@"FBUserDetail"];
[userDefaults synchronize];
}
For Login :-
-(void)onClickLogin
{
[self fbDidLogout];
if (![[self facebook] isSessionValid]) {
[[self facebook] authorize:self.permissions];
}else {
[facebook requestWithGraphPath:@"me" andDelegate:self];
}
}
Cell Details :-
{
static NSString *cellIdentifier = @"CustomCell";
CustomCellAllergy *cell = (CustomCellAllergy *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCellAllergy" owner:self options:nil];
for (id currentObject in topLevelObjects)
{
if ([currentObject isKindOfClass:[UITableViewCell class]]){
cell = (CustomCellAllergy *) currentObject;
break;
}
}
}
[cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
NSDictionary *result = [array objectAtIndex:indexPath.row];
[cell setObjItem:result];
return cell;
}
#pragma mark - Share Methods
-(void)sharetoFB
{
NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:[objUserImage valueForKey:@"imageurl"]]];
UIImage *img=[UIImage imageWithData:data];
NSDictionary* params = [NSDictionary dictionaryWithObjectsAndKeys:
@"Share on Facebook", @"user_message_prompt",
@" App",@"text",
@" App", @"caption",
img,@"picture",
nil];
[self.facebook requestWithMethodName:@"photos.upload"
andParams:[params mutableCopy]
andHttpMethod:@"POST"
andDelegate:self];
[img release];
}
#pragma mark -
#pragma mark FlickrCellDelegate methods
- (void)loadContentForVisibleCells
{
NSArray *cells = [tblView visibleCells];
[cells retain];
for (int i = 0; i < [cells count]; i++)
{
CommentCell *flickrCell = (CommentCell *)[cells objectAtIndex: i] ;
[flickrCell loadImage];
}
[cells release];
}
- (void)flickrCellAnimationFinished:(CommentCell *)cell {
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;
{
[self loadContentForVisibleCells];
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
{
if (!decelerate)
{
[self loadContentForVisibleCells];
}
}
CustomTabbar
CustomTabbar.h
#import <UIKit/UIKit.h>
#import "UIView+NibLoading.h"
@class CustomTabBar;
@protocol CustomTabBarDelegate
@required
- (void)setTabIndex:(int)index;
@end
@interface CustomTabBar : UIView {
//id<CustomTabBarDelegate> delegate;
}
@property (nonatomic, strong)IBOutlet UIImageView *imgTabBackGround;
@property (nonatomic, strong)IBOutlet UIButton *btnOne, *btnTwo, *btnThree;
@property(nonatomic, strong)IBOutlet UILabel *lblone;
@property(nonatomic, strong)IBOutlet UILabel *lbltwo;
@property(nonatomic, strong)IBOutlet UILabel *lblthree;
@property(nonatomic, strong)IBOutlet UIImageView *imgOne;
@property(nonatomic, strong)IBOutlet UIImageView *imgTwo;
@property(nonatomic, strong)IBOutlet UIImageView *imgThree;
@property (nonatomic, strong) id<CustomTabBarDelegate> delegate;
-(IBAction)onClickbtnOne:(id)sender;
-(IBAction)onClickbtnTwo:(id)sender;
-(IBAction)onClickbtnThree:(id)sender;
CustomTabbar.m
#import "CustomTabBar.h"
#import <QuartzCore/QuartzCore.h>
#import "AppDelegate.h"
#import "TabBarController.h"
@implementation CustomTabBar
AppDelegate *appDelegate;
#pragma mark -
#pragma mark - init methods
-(id) initWithFrame:(CGRect)frame {
if(self == [super initWithFrame:frame])
{
appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
self = (CustomTabBar *)[CustomTabBar loadInstanceFromNib:self];
self.frame = frame;
//self.hidden = TRUE;
[self setBackgroundColor:[UIColor clearColor]];
[self onClickbtnOne:nil];
}
return self;
}
#pragma mark -
#pragma mark - Actions
-(IBAction)onClickbtnOne:(id)sender{
appDelegate.tabBarController.selectedIndex=0;
[delegate setTabIndex:0];
[self setTabBar];
[self.lblOne setFont:[UIFont boldSystemFontOfSize:10.0]];
[self.lblOne setTextColor:[UIColor whiteColor]];
[self.imgOne setImage:[UIImage imageNamed:@"btnOne_on"]];
}
-(IBAction)onClickbtnTwo:(id)sender{
appDelegate.tabBarController.selectedIndex=1;
[delegate setTabIndex:1];
[self setTabBar];
[self.lblTwo setFont:[UIFont boldSystemFontOfSize:10.0]];
[self.lblTwo setTextColor:[UIColor whiteColor]];
[self.imgTwo setImage:[UIImage imageNamed:@"btnTwo_on"]];
}
-(IBAction)onClickbtnThree:(id)sender{
appDelegate.tabBarController.selectedIndex=2;
[delegate setTabIndex:2];
[self setTabBar];
[self.lblThree setFont:[UIFont boldSystemFontOfSize:10.0]];
[self.lblThree setTextColor:[UIColor whiteColor]];
[self.imgThree setImage:[UIImage imageNamed:@"btnThree_on"]];
}
-(void)setTabBar{
[self.lblOne setFont:[UIFont systemFontOfSize:10.0]];
[self.lblOne setTextColor:[UIColor lightGrayColor]];
[self.lblTwo setFont:[UIFont systemFontOfSize:10.0]];
[self.lblTwo setTextColor:[UIColor lightGrayColor]];
[self.lblThree setFont:[UIFont systemFontOfSize:10.0]];
[self.lblThree setTextColor:[UIColor lightGrayColor]];
[self.imgOne setImage:[UIImage imageNamed:@"btnZ"]];
[self.imgTwo setImage:[UIImage imageNamed:@"btnS"]];
[self.imgThree setImage:[UIImage imageNamed:@"btnY"]];
}
@end
Category Class :-
#import "UIView+NibLoading.h"
@implementation UIView (NibLoading)
+(UIView*) loadInstanceFromNib:(id)fileOwner {
UIView *result = nil;
//NSLog(@"[self class] >>>> %@",NSStringFromClass([self class]));
NSArray* elements = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:fileOwner options: nil];
for (id anObject in elements) {
if ([anObject isKindOfClass:[self class]]) {
result = anObject;
break;
}
}
return result;
}
@end
-(void)addCustomTabbar
{
if(self.objCustomTabBar == nil)
self.objCustomTabBar=[[CustomTabBar alloc]initWithFrame:CGRectMake(0, ((isiPhone5) ? 498.0:410.0), 321, 70)];
[self.window addSubview:self.objCustomTabBar];
[self.window bringSubviewToFront:self.objCustomTabBar];
}
Saturday, September 14, 2013
Reg Date
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
Log Data
LoginView.h
#import <UIKit/UIKit.h>
#import "HttpWrapper.h"
#import "ASIHTTPRequest.h"
#import "ASIFormDataRequest.h"
#import "BSKeyboardControls.h"
@interface LoginView : UIViewController<HttpWrapperDelegate,UITextFieldDelegate,BSKeyboardControlsDelegate,UIScrollViewDelegate>
{
IBOutlet UITextField *txtUserName;
IBOutlet UITextField *txtPassword;
IBOutlet UIButton *btnSignIn;
IBOutlet UIButton *btnSignUp;
IBOutlet UIButton *btnRemember;
IBOutlet UIButton *btnFogotPassword;
IBOutlet UIScrollView *scrView;
ASIFormDataRequest *request;
HttpWrapper *regRequest,*loginRequest;
BOOL isRemember;
}
@property(nonatomic, strong) BSKeyboardControls *keyboardControls;
@property(nonatomic,retain)IBOutlet UITextField *txtUserName;
@property(nonatomic,retain)IBOutlet UITextField *txtPassword;
@property(nonatomic,retain)IBOutlet UIScrollView *scrView;
@end
Login.m
#import "LoginView.h"
#import "RegisterView.h"
#import "AppDelegate.h"
#import "NSString+SBJSON.h"
#import "DBHelper.h"
#import "ForgotPasswordView.h"
@interface LoginView ()
@end
@implementation LoginView
@synthesize txtPassword,txtUserName,keyboardControls,scrView;
AppDelegate *appDelegate;
DBHelper *db;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
appDelegate = [AppDelegate sharedAppDelegate];
self.title =@"Login";
// NSArray *fields = @[self.txtUserName,self.txtPassword];
// [self setKeyboardControls:[[BSKeyboardControls alloc] initWithFields:fields]];
// [self.keyboardControls setDelegate:self];
// [scrView setContentSize:CGSizeMake(320,82)];
db = [[DBHelper alloc]init];
NSString *username = [[NSUserDefaults standardUserDefaults] objectForKey:@"username"];
NSString *password = [[NSUserDefaults standardUserDefaults] objectForKey:@"password"];
if(username && password)
{
isRemember = YES;
[btnRemember setSelected:YES];
txtUserName.text = username;
txtPassword.text = password;
}
else
{
txtUserName.text = @"";
txtPassword.text = @"";
}
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
[self.navigationItem setBackBarButtonItem:barButton];
[barButton release];
// [self drawPlaceholderInRect:CGRectMake(0, 0, <#CGFloat width#>, <#CGFloat height#>)]
}
- (void) drawPlaceholderInRect:(CGRect)rect {
[[UIColor blueColor] setFill];
[[txtPassword placeholder] drawInRect:rect withFont:[UIFont systemFontOfSize:16]];
}
-(void)viewWillAppear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:YES];
}
-(IBAction)OnClickSignIn:(id)sender
{
[appDelegate addTabBarControllerInwindow];
return;
if ([txtUserName.text isEqualToString:@""] || [txtPassword.text isEqualToString:@""]) {
[appDelegate showAlertWithTitle:@"Alert" message:@"Please Enter UserName and Password"];
return;
}
if(loginRequest)
{
[loginRequest cancelRequest];
[loginRequest release];
loginRequest = nil;
}
[appDelegate showLoadingView];
loginRequest = [[HttpWrapper alloc] init];
loginRequest.delegate=self;
NSString *strUrl = [NSString stringWithFormat:@"%@?action=CheckLogin&UName=%@&Pwd=%@",API_URL,txtUserName.text,txtPassword.text];
[loginRequest requestWithMethod:@"GET" url:strUrl param:nil];
}
-(IBAction)onClickForgotPass:(id)sender
{
ForgotPasswordView *forgotPass =[[ForgotPasswordView alloc]initWithNibName:@"ForgotPasswordView" bundle:nil];
[self.navigationController pushViewController:forgotPass animated:YES];
[forgotPass release];
}
-(void) HttpWrapper:(HttpWrapper *)wrapper fetchDataFail:(NSError *)error
{
if(wrapper == loginRequest)
{
// btnLogin.enabled=YES;
}
else if(wrapper == regRequest)
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults removeObjectForKey:@"username"];
[userDefaults synchronize];
}
[appDelegate showAlertWithTitle:@"Connection" message:@"Please check internet connection"];
[appDelegate hideLoadingView];
// [activity stopAnimating];
self.view.userInteractionEnabled = YES;
// btnLogin.hidden = NO;
}
-(void) HttpWrapper:(HttpWrapper *)wrapper fetchDataSuccess:(NSString *)response
{
// btnLogin.hidden = NO;
// [activity stopAnimating];
[appDelegate hideLoadingView];
self.view.userInteractionEnabled = YES;
if(wrapper == loginRequest)
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *strUsername=[defaults objectForKey:@"username"];
if (![txtUserName.text isEqualToString:strUsername]) {
[db deleteAllPatientInfo];
}
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if (isRemember) {
[userDefaults setObject:txtUserName.text forKey:@"username"];
[userDefaults setObject:txtPassword.text forKey:@"password"];
}
else{
[userDefaults removeObjectForKey:@"username"];
[userDefaults removeObjectForKey:@"password"];
[userDefaults setObject:txtUserName.text forKey:@"username"];
}
appDelegate.isLogin = YES;
[userDefaults setBool:appDelegate.isLogin forKey:@"login"];
[userDefaults synchronize];
NSLog(@"Login >fetch success %@",response);
//[appDelegate loadTabbar];
// btnLogin.enabled=YES;
NSMutableDictionary *dict= (NSMutableDictionary *)[response JSONValue];
appDelegate.dirUserInfo = dict;
if([[dict valueForKey:@"status"]integerValue] == 0){
[appDelegate showAlertWithTitle:@"Login" message:@"Invalid Login"];
[appDelegate hideLoadingView];
return;
}
appDelegate.userID=[[appDelegate.dirUserInfo valueForKey:@"userid"] intValue];
[appDelegate addTabBarControllerInwindow];
}
}
-(IBAction)onClickRemember:(id)sender
{
[btnRemember setSelected:!btnRemember.selected];
isRemember = btnRemember.selected;
}
-(IBAction)OnClickSignUp:(id)sender
{
RegisterView *objregister =[[RegisterView alloc]initWithNibName:@"RegisterView" bundle:nil];
[self.navigationController pushViewController:objregister animated:YES];
[objregister release];
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
-(void) textFieldDidEndEditing:(UITextField *)textField
{
[textField resignFirstResponder];
CGPoint bottomOffset = CGPointMake(0, 0);
[scrView setContentOffset:bottomOffset animated:YES];
}
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
CGPoint offset = CGPointMake(0,0);
if (textField == txtUserName)
{
offset.y = txtUserName.frame.origin.y-10;
[scrView setContentOffset:offset animated:NO];
}
else if (textField == txtPassword)
{
offset.y = txtPassword.frame.origin.y-10;
[scrView setContentOffset:offset animated:NO];
}
// [self.keyboardControls setActiveField:textField];
}
#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.scrView.frame.origin.y;
[self.scrView setContentOffset:offset animated:YES];
}
- (void)keyboardControlsDonePressed:(BSKeyboardControls *)keyboardControls1
{
[self.scrView setContentOffset:CGPointZero animated:YES];
[keyboardControls.activeField resignFirstResponder];
}
*/
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
Image processes in particular View using Async
Image processes in particular View using Async :-
In xib take one View n give reference of asyncimage
- (void)viewDidLoad
{
[super viewDidLoad];
scroller =[[CustomScrollBar alloc]initWithFrame:CGRectMake(0,44,
320,460)];
scroller.maximumZoomScale = 4.0;
scroller.minimumZoomScale = 1.0;
scroller.clipsToBounds = YES;
scroller.scrollEnabled = YES;
scroller.multipleTouchEnabled = YES;
scroller.userInteractionEnabled = YES;
scroller.showsHorizontalScrollIndicator = YES;
scroller.showsVerticalScrollIndicator = YES;
scroller.scrollsToTop = NO;
scroller.delegate = self;
scroller.del = self;
scroller.contentSize = CGSizeMake(scroller.frame.size.width,
scroller.frame.size.height);
float x = asyImg.bounds.size.width/2;
float y = (asyImg.bounds.size.height/2);
asyImg.center = CGPointMake(x, y);
[asyImg setFrame:CGRectMake(0,44, 320, 290)];
[scroller addSubview:asyImg];
self.view.clipsToBounds = YES;
[self.view addSubview:scroller];
[asyImg loadImageFromString:[objImage valueForKey:@"image"] dict:nil];
}
#pragma mark -
#pragma mark scrollView Delegate Methods
-(UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return asyImg;
}
#pragma mark -
#pragma mark Touch Delegate Methods
- (void)touchesBeganScroll:(NSSet *)touches withEvent:(UIEvent *)event {
}
- (void)touchesMovedScroll:(NSSet *)touches withEvent:(UIEvent *)event {
}
- (void)touchesEndedScroll:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
if ([touch tapCount] == 1) {
[scroller setZoomScale:1.0];
[self setViewAnimation:CGRectMake(10, 65, 320, 350)];
}
}
-(void) setViewAnimation:(CGRect)frame {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
asyImg.frame = self.view.frame;
scroller.contentSize = self.view.frame.size;
[UIView commitAnimations];
}
If we want to Post Image :-
-(void)imageUpload
{
request = [[[ASIFormDataRequest alloc] initWithURL:strUrl] autorelease];
[request setRequestMethod:@"POST"];
[request setTimeOutSeconds:120];
[request addRequestHeader:@"Content-Type" value:@"multipart/form-data"];
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *strUser = [prefs valueForKey:@"username"];
[strUser retain];
NSString * strUserLocal = [strUser stringByAppendingString:@".jpeg"];
NSString *imagePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent:strUserLocal];
[request setPostValue:@"png" forKey:@"type"];
[request setFile:fetchPath withFileName:imageName andContentType:@"image/ jpg" forKey:@"image"];
[request setUseCookiePersistence:NO];
[request setUseSessionPersistence:NO];
[request setDelegate:self];
[request setDidFinishSelector:@selector(requestFinished:)];
[request setDidFailSelector:@selector(requestFailed:)];
[request setShowAccurateProgress:YES];
[request startAsynchronous];
}
OR Other Way to Upload Photo :-
- (UIImage *)imageByScalingProportionallyToSize:(CGSize)targetSize {
UIImage *sourceImage = self;
UIImage *newImage = nil;
CGSize imageSize = sourceImage.size;
CGFloat width = imageSize.width;
CGFloat height = imageSize.height;
CGFloat targetWidth = targetSize.width;
CGFloat targetHeight = targetSize.height;
CGFloat scaleFactor = 0.0;
CGFloat scaledWidth = targetWidth;
CGFloat scaledHeight = targetHeight;
CGPoint thumbnailPoint = CGPointMake(0.0,0.0);
if (CGSizeEqualToSize(imageSize, targetSize) == NO) {
CGFloat widthFactor = targetWidth / width;
CGFloat heightFactor = targetHeight / height;
if (widthFactor < heightFactor)
scaleFactor = widthFactor;
else
scaleFactor = heightFactor;
scaledWidth = width * scaleFactor;
scaledHeight = height * scaleFactor;
// center the image
if (widthFactor < heightFactor) {
thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;
} else if (widthFactor > heightFactor) {
thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;
}
}
// this is actually the interesting part:
UIGraphicsBeginImageContext(targetSize);
CGRect thumbnailRect = CGRectZero;
thumbnailRect.origin = thumbnailPoint;
thumbnailRect.size.width = scaledWidth;
thumbnailRect.size.height = scaledHeight;
[sourceImage drawInRect:thumbnailRect];
newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
if(newImage == nil) NSLog(@"could not scale image");
return newImage ;
}
-(void)imageUpload
{
NSURL *strUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@? action=addComment",Server_URL_MOBICH]];
request = [[[ASIFormDataRequest alloc] initWithURL:strUrl] autorelease];
NSData *imageData = nil;
UIImage *image;
if (image !=nil) {
UIImage *newImage = [image imageByScalingProportionallyToSize:CGSizeMake(600, 600)];
imageData = UIImageJPEGRepresentation(newImage, 0.9);
[request setData:imageData forKey:@"image"];
[request setPostValue:@"png" forKey:@"type"];
[request setPostValue:@"ImageType" forKey:@"comment_type"];
}
[request setRequestMethod:@"POST"];
[request setTimeOutSeconds:120];
[request addRequestHeader:@"Content-Type" value:@"multipart/form-data"];
[request setUseCookiePersistence:NO];
[request setUseSessionPersistence:NO];
[request setDelegate:self];
[appDelegate showLoadingView];
[request setDidFinishSelector:@selector(requestFinished:)];
[request setDidFailSelector:@selector(requestFailed:)];
[request setShowAccurateProgress:YES];
[request startAsynchronous];
}
}
Way to Save Image in CoreData :-
-(void)btnBarSave
{
if(!self.objinsurance)
{
objinsurance =(Insurance *)[appDelegate.objHelper createObjectForEntity:Entity_Insurance];
}
objinsurance.name = txtName.text;
objinsurance.insurance_id = txtInsuranceId.text;
if (imageView.image != nil) {
UIImage *image = imageView.image;
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *strUser = [prefs valueForKey:@"username"];
[strUser retain];
NSString * strUserLocal = [objinsurance.insurance_id stringByAppendingString:@".png"];
NSString *imagePath = [[appDelegate applicationDocumentCacheDirectory] stringByAppendingPathComponent:strUserLocal];
NSLog(@"Path by Image To SAVE :::::>>>%@<<<<<<",imagePath);
NSData *data = [NSData dataWithData:UIImagePNGRepresentation(image)];
if(data != nil) {
[data writeToFile:imagePath atomically:YES];
NSLog(@">>>>>>>>>>>>>>>>>>> Image Going To Write <<<<<<<<<<<");
objinsurance.picture = imagePath;
}
else
{
[[NSFileManager defaultManager] removeItemAtPath:imagePath error:NULL];
NSLog(@">>>>>>>>>>>>>>>>>>> Error Writing Image File to Directory <<<<<<<<<<<");
}
}else{
NSLog(@"nil");
}
[appDelegate saveContext];
[appDelegate showAlertWithTitle:@"" message:@"Data Saved Successfully"];
}
To View Image from CoreData for edit:-
{
txtName.text = objinsurance.name;
NSData *data = [NSData dataWithContentsOfFile:objinsurance.picture];
imageView.image = [UIImage imageWithData:data];
}
DBHelper Classes :-
DBHelper.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface DBHelper : NSObject {
}
DBHelper.m
@implementation DBHelper
AppDelegate *appDelegate;
-(id) init {
if((self = [super init])) {
appDelegate = [AppDelegate sharedAppDelegate];
}
return self;
}
#pragma mark -
#pragma mark - Creating Object
-(id)createObjectForEntity:(NSString *)entityName
{
if (entityName!=nil || [entityName isEqualToString:@""])
{
return [NSEntityDescription
insertNewObjectForEntityForName:entityName
inManagedObjectContext:appDelegate.managedObjectContext];
}
else{
return nil;
}
}
-(id)createObjectForEntity:(NSString *)entityName context:(NSManagedObjectContext *)aContext
{
if (entityName!=nil || [entityName isEqualToString:@""])
{
return [NSEntityDescription
insertNewObjectForEntityForName:entityName
inManagedObjectContext:aContext];
}
else{
return nil;
}
}
#pragma mark -
#pragma mark - Retrive Object
-(NSMutableArray*) getObjectsforEntity:(NSString *)strEntity ShortBy:(NSString *)strShort isAscending:(BOOL)ascending predicate:(NSPredicate *)predicate
{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:strEntity inManagedObjectContext:appDelegate.managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setIncludesPendingChanges:NO];
if (strShort)
{
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:strShort ascending:ascending];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[sort release];
}
if (predicate)
{
[fetchRequest setPredicate:predicate];
}
NSError *error;
NSMutableArray *arrAllObjects = (NSMutableArray*)[appDelegate.managedObjectContext executeFetchRequest:fetchRequest error:&error];
[arrAllObjects retain];
[fetchRequest release];
return arrAllObjects;
}
#pragma mark -
#pragma mark path for Document Directory
-(NSString *)applicationDocumentsDirectory {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
return basePath;
}
Subscribe to:
Posts (Atom)