Pages

Wednesday, October 16, 2013

Few Useful Objective-C Snippets for an iOS App


LAUNCH MAIL AND SEND AN EMAIL

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://mymail@myserver.com"]];

PREVENT SLEEP MODE

[UIApplication sharedApplication].idleTimerDisabled = YES;

STOP RESPONDING TO TOUCHES

[[UIApplication sharedApplication] beginIgnoringInteractionEvents];

RESUME RESPONDING TO TOUCHES

[[UIApplication sharedApplication] endIgnoringInteractionEvents];

DISPLAY AN ALERT WINDOW

UIAlertView* alert = [[[UIAlertView alloc] initWithTitle:@"Warning" message:@"too many alerts" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease];
[alert show]

Sunday, May 12, 2013

Delay Code in iOS

double delayInSeconds = 6.0; 
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
// unhide views, animate if desired
 [self.navigationController popViewControllerAnimated:YES]; 
});

Thursday, February 28, 2013

Sliding Up UITextFields which are hidden by the keyboard in iOS


First, declare the following constants somewhere at the top of the view controller's implementation file. 


CGFloat animatedDistance;

static const CGFloat KEYBOARD_ANIMATION_DURATION = 0.3;

static const CGFloat MINIMUM_SCROLL_FRACTION = 0.2;

static const CGFloat MAXIMUM_SCROLL_FRACTION = 0.8;

static const CGFloat PORTRAIT_KEYBOARD_HEIGHT = 216;

static const CGFloat LANDSCAPE_KEYBOARD_HEIGHT = 162;



When the textfield will be touched, we will get the rect of the textfield and convert everything to the window coordinates.

Then we calculate the fraction between the top and bottom of the middle section for the text field's midline.

Then we will clamp this fraction so that the top section is all "0.0" and the bottom section is all "1.0".

Then this fraction is converted to scroll according to the keyboards height.

Finally, apply the animation.

Hide the keyboard when you touch outside of an UITextField in iOS

On viewDidLoad add the following lines:

UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)];
[self.view addGestureRecognizer:gestureRecognizer];


Then add the following function somewhere in the implementation file.

- (void) hideKeyboard {
[activeField resignFirstResponder];
}

Here activeField is an UITextField object. Declare it somewhere at the top of the view controller's implementation file.