Thursday, October 3, 2013

iOS 7 (XCode 5) Tutorial - ContentSize of Text View is not calculating correctly any more with iOS 7

iOS 7 (XCode 5) ContentSize of Text View is not calculating correctly any more with iOS 7


Before X Code 5, to get the contents height of text view we use text view's property contentSize. But its no longer work with new iOS 7. 

Option 1:

With iOS 7, we have a different property named textContainer. It gives text container of text view. 

You need to replace the following line of code (These line of code set the text view frame according to its content length.)

 CGRect frame = _textView.frame;
 frame.size.height = _textView.contentSize.height;
_textView.frame = frame;

with 

CGRect frame = _textView.frame;
 frame.size.height = _textView.textContainer.size.height;
 _textView.frame = frame;

_textView.textContainer.size gives the same value which was given by _textView.contentSize earlier.

Option 2:

We can also replace the line of code 


 CGRect frame = _textView.frame;
 frame.size.height = _textView.contentSize.height;
_textView.frame = frame;

with 

CGRect frame = _textView.frame;
 frame.size.height = [_textView sizeThatFits:CGSizeMake(txtView.frame.size.width, MAXFLOAT)].height;
 _textView.frame = frame;

Above lines of code will work with each iOS.






Monday, September 30, 2013

iOS 7 ( XCode 5) Tutorial - IBAction is not working with custom cell

iOS 7 ( XCode 5) IBAction is not working with custom cell


Many of the developer used custom view to show custom cell on Table view for older version of iOS. If you are one of them, then you will have to face a problem that your button click action will no longer work with iOS7.


How to resolve this:

You have three options:

Option 1:  Create the new lay out with new table cell instead of taking view. and put all layouts again in table cell.

I know, this will require a lot of effort. If you don't want to do this, we have a very small hack for it : option 2


Option 2: Create a IBOutlet for your button and add this button as a subview of your cell's content view.


    [self.myCell.contentView addSubview:self.btn_click];


The above line of code will add btn_click as a subview of you content view. Now button click action should work.

Option 3: 

The best way : 

i) Take An outlet UITableViewCell.
ii) Make existing view as subview of new table cell.
iii) Disconnect the connection of custom cell to existing view and connect it to new UITableViewCell.

thats it, Your IBAction will work now.

May be you got the crash with error message that "class is not key value coding - compliant.". Check your old view connection and remove all connection having yellow mark.

Please don't hesitate to use comment section if you have any question.




Tuesday, January 29, 2013

Custom KeyBoard Handler With Done, Next and Previous Button



Keyword: Safari like keyboard, done, next button, tab orderring, text field, text field delegate

Custom KeyBoard Handler With Done, Next and Previous Button

Get contacts of all your emergency needs on single tap. Download Quick-Finder for iPhone


Get the sample code and helper file from the link

1) Copy helper files customKeyBoardHelper.h and customKeyBoardHelper.m to your project.
2) Follwing methods are provided in helper classes

  -(void)showingKeyboardHeader:(BOOL)isKeyboard;
  -(void)showingDoneButton:(BOOL)isDone;
  -(void)settingTitleForDoneButton:(NSString *)done WithImage:(UIImage *)dimg;


  -(void)addButtonWithTitle:(NSString *)tit forCustomHandler:(SEL)sel;
  -(void)addButtonWithImage:(UIImage *)img forCustomHandler:(SEL)sel;


  -(void)addButtonWithTitle:(NSString *)tit forEvent:(events)sel;
  -(void)addButtonWithImage:(UIImage *)img forEvent:(events)sel;


  -(void)addTextField:(UITextField *)txtField;
  -(void)getCustomeKeyBoard;
  -(id)initWithBaseController:(UIViewController *)ctrl;



Use of Helper Classes


1) Take a project of name KeyBoardSample.

2) Open KeyBoardSample.xib and populate 4 text fields on it. 

3) Named these as txt1,txt2,txt3 and txt4.

4) Connect all text fields outlets to .h File.

5) import customKeyBoardHelper.h to KeyBoardSample.h

5) Open .m file and modified the code of  viewDidLoad as 


- (void)viewDidLoad
{
    [super viewDidLoad];
    
    customKeyBoardHelper *helper=[[customKeyBoardHelper alloc]initWithBaseController:self];
    [helper addTextField:self.txt1];
    [helper addTextField:self.txt3];
    [helper addTextField:self.txt2];

//  Here tab order is txt1 --> txt3 --> txt2 . You can change it.

    [helper addButtonWithTitle:@"Next" forEvent:MoveToNext];

// Two methods are provided. MoveToNext and MoveToBack
//  MoveToNext method is used to move cursor from one text field to next field.
//  MoveToBack method is used to move cursor from one text field to previous field.

   [helper addButtonWithTitle:@"Test" forCustomHandler:@selector(testtask)];

// You can also make your custom handler. Here we have made a method named testtask. We need to implement this method later.

// You can also set the image instead of giving title as 

 [helper addButtonWithImage:[UIImage imageNamed:@"imageName.png"forEvent:MoveToNext];
   
// Finally call the method to set your custom key board.   
    [helper getCustomeKeyBoard];
}


6) implement testtask method.

-(void)testtask
{



}

7) Done button is provided by default. You can hide this by using method showingDoneButton.


Get the sample code and helper files at   
http://adf.ly/IArVQ









Sunday, January 13, 2013

iPhone Post Web Service Helper

POST SERVICE HELPER 

Keywords: Post service, HTTP, Helper

Get contacts of all your emergency needs on single tap. Download Quick-Finder for iPhone

Helper classes download at http://adf.ly/ILKC0


1)  Get the helper classes for post service from here. This helper class provides asynchronous request.

2) Methods provided by helper classes

  -(void)setURL:(NSString *)str;
  -(void)addParamValue:(NSString *)value forKey:(NSString *)key;
  -(void)addHeaderValue:(NSString *)value forKey:(NSString *)key;
  -(void)runWithController:(UIViewController *)ctrl andCallBack:(SEL)select;


Use of helper classes


i) import Post service helper class where do you want to use post service
        #import "PostServiceHelper.h"

ii) Initialise object of PostServiceHelper as 
      PostServiceHelper *helper=[[PostServiceHelper alloc]init];

iii) set URL as 

    [helper setURL:urlString];

    // url string is your url where do you want to send request.



iv) set Header as 
      [helper  addHeaderValue:value forKey:key];
      // value and key are NSString 

v) set Parameter as
     [helper addParamValue:value forKey:key];
     // value and key are NSString 

vi) Run service
    [helper runWithController:self andCallBack:@selector(callback:)];
  // callback: is a callback method


vii) You can use call back method as  

-(void)callback:(NSString *)result
{
        NSLog(@"%@", result);
// Here we are printing response , You can use this result as you want

 }

You can get the source file from here






Sunday, December 30, 2012

How to show rout map in iOS6

Key Words: Google Map, iOS6, rout map
  

              How to show rout map in iOS6

Get contacts of all your emergency needs on single tap. Download Quick-Finder for iPhone


1) Take a web view where do you want to show the map.

2) Let you want to show the rout between Delhi(India) to Noida(India).

   You need to write following code of lines
   
   NSString *mapStr=[NSString stringWithFormat:@"https://maps.google.com/maps?saddr=delhi&   daddr=noida"];
    NSURL *mapURL=[NSURL URLWithString:mapStr];
    NSURLRequest *mapReq=[NSURLRequest requestWithURL:mapURL];
    [webView loadRequest:mapReq]; 


If you know the lattitude and longitude of given places you can use pair of (lat, long) instead of name of places.


Tuesday, December 25, 2012

How To Make Gallery View in iOS

Keywords: Scroll view, gallery, ios, iphone, xcode, image view

How To Make Gallery View in iOS

Get contacts of all your emergency needs on single tap. Download Quick-Finder for iPhone

Code of this sample is available here
http://adf.ly/GS9Ya



1) Take a project of name GallerySample.

2) drag and drop 5 images in your resource folder with name of image1.jpeg,image2.jpeg,image3.jpeg,image4.jpeg and image5.jpeg.

3) Open ViewController.m and modified the code as follows (Modified code is in different color)


#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    
    UIScrollView *scrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 50, 320, 270)];
    // creating a scroll view
    
    
    [scrollView setPagingEnabled:YES];
    
    // enabled paging of scroll view
    
    [scrollView setShowsHorizontalScrollIndicator:NO];
    
    // disabled sliding bar
    
    NSArray *imageArray=[[NSArray alloc]initWithObjects:@"image1",@"image2",@"image3",@"image4",@"image5", nil];
    
    // creating an array having the name of all images which are to be shown in gallery
    
    
    
    for( int i=0; i< [imageArray count];i++)
    {
        
        NSString *imageName=[imageArray objectAtIndex:i];
    
        // getting the name of image from array
        
        NSString *fullImageName=[NSString stringWithFormat:@"%@.jpeg",imageName];
        
        // appending extention to the name of image to complete the image name
        
        int padding=25;
        // padding is given.
        
        CGRect imageViewFrame=CGRectMake(scrollView.frame.size.width*i+padding, scrollView.frame.origin.y, scrollView.frame.size.width-2*padding, scrollView.frame.size.height);
        
        // Getting frame of image so that all images are not overlapped to each other.
        // each frame is distict with other frame
        
        UIImageView *imageView=[[UIImageView alloc]initWithFrame:imageViewFrame];
        
        // Setting frame of imageView
        
        [imageView setImage:[UIImage imageNamed:fullImageName]];
        
        // setting image to the image view
        
        [imageView setContentMode:UIViewContentModeScaleAspectFit];
        
        // setting content mode of image view so that image looks good
        
        
        [scrollView addSubview:imageView];
        
        // adding image view to the scroll view

    }
    
    CGSize scrollViewSize=CGSizeMake(scrollView.frame.size.width*[imageArray count], scrollView.frame.size.height);
    
    // getting the content size of scroll view
    
    [scrollView setContentSize:scrollViewSize];
    // setting content size of scroll view
    
    [self.view addSubview:scrollView];
    
    // finally add scroll view to your view
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end


Now when you run the code you will get a gallery having 5 images , You can scroll to get all images.

You can download the sample code from here (Media fire link)
http://adf.ly/GS9Ya


Friday, November 30, 2012

How to store values in keychain of ios

How to store values in keychain of ios

Get contacts of all your emergency needs on single tap. Download Quick-Finder for iPhone

Tutorial for: Key chain, user defaults, values, KeychainItemWrapper, iphone, ios

What is keyChain -

Key chain is the place where we can store the values which will be retain even after deleting application. Generally we store username and password in it.


Difference between KeyChain and userDefaults
The values which are store in userDeafults are deleted when we delete the app from our device but the values stored in KeyChain will not.


Apple provides helper classes, for that you can refer to this link
htps://developer.apple.com/library/ios/#samplecode/GenericKeychain/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007797
Or you can download it from here

Initialise the class

KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"Your application name" accessGroup:nil];

How to save the values
[wrapper setObject:@"PASSWORD" forKey:@"KEYPASS"];
[wrapper setObject:@"USERNAME" forKey:@"KEYUSER"];


how to retrive the values

NSString *pwd = [wrapper objectForKey:@"KEYPASS"];
NSString *user = [wrapperobjectForKey:@"KEYUSER"];


How to delete the values

[wrapper resetKeychainItem];

Reference: http://stackoverflow.com/questions/6972092/ios-how-to-store-username-password-within-an-app
www.Hypersmash.com