This text is replaced by the Flash movie.

Archive for the ‘Objective C / Cocoa Touch [iPhone]’ Category

NSConcreteMutableData

July 9th, 2010
For some reason I experienced another odd and I'm not sure what causing it, when I try to access one of my view controllers.

NSConcreteMutableData

The thing was... I mistakenly selected "Simulator 3.0" which the bug exists.

Simulator 3.0

Apple already fixed this issue with 3.1.
Under "Known Issues and Fixes/Core Data"
"The of an instance when processing object changes has been fixed."

UIColor Color Codes

April 18th, 2010

DigitalColor Meter Icon I Just realize how hard it was to just assign color by code using UIColor, Well heres a little work around. Using the utilities in mac, which will you can find at Applications/Utilities folder. Open it.



DigitalColor Meter

Make sure you selected "RGB As Percentage", Use your mouse to move the cursor over the pixel you want to sample, and read off the values, once you got the color you want; press Command-Shift-H, This will hold the color values you got for the moment. Press F4 for Dashboard use calculator,

Dashboard Calculator

Divide the values you got to 100, for example R%: 78.8 = .788; Then you can finally put the on your UIColor parameter.

UIColor

#define COLOR_FOR_THIS [UIColor colorWithRed:0.788f green:0.207f blue:0.271f alpha:1.0f]

NSZombieEnabled Causes memory Leak.

April 10th, 2010

Xcode's InstrumentNoobie Mistake while trying to traced with the app I am working on using the instrument provided by , I got series of pink spikes,

Xcode's Leaking Instrument

and I'm not sure what was causing it, I thought that the managedObject Context was the culprit. I noticed tons of __ prefix listed and I remember that I added the NSZombieEnabled tag under the Argument in "Executable App Info",

Xcode NSZombieEnabled

I added NSZombieEnabled environment variable because it can be helpful to track down the elusive object causing the problem, mostly tracing the EXC_BAD_ACCESS error message. So after I disabled it, the app I am working on had no leak after all.

Xcode's No Leak Instrument


Animating View

January 20th, 2010

Make View move upward - UITextField Begin Editing


Attached is the video - what I was trying to do, it happens that my first app has UITextField positioned where the text keypad will appear also, which will hide the current UITextField. Well I realized that I will encounter this often, so I guess it's important to have this piece of code.


in your interface builder assign the UITextField as delegate

UITextField as delegate

UITextField as delegate

on your .m file declare the static constant at the top of the code.

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 = 140;

after at the @implementation put this global variable to be used for all events

 CGFloat animatedDistance;

at the textFieldDidBeginEditing event

- (void)textFieldDidBeginEditing:(UITextField *)textField {
 
	CGRect textFieldRect = [self.view.window convertRect:textField.bounds fromView:textField];
    CGRect viewRect = [self.view.window convertRect:self.view.bounds fromView:self.view];
 
    CGFloat midline = textFieldRect.origin.y + 0.5 * textFieldRect.size.height;
    CGFloat numerator =
	midline - viewRect.origin.y - MINIMUM_SCROLL_FRACTION * viewRect.size.height;
    CGFloat denominator =
	(MAXIMUM_SCROLL_FRACTION - MINIMUM_SCROLL_FRACTION) * viewRect.size.height;
    CGFloat heightFraction = numerator / denominator;
 
 
	if (heightFraction < 0.0)
    {
        heightFraction = 0.0;
    }
    else if (heightFraction > 1.0)
    {
        heightFraction = 1.0;
    }
 
	UIInterfaceOrientation orientation =
	[[UIApplication sharedApplication] statusBarOrientation];
    if (orientation == UIInterfaceOrientationPortrait ||
        orientation == UIInterfaceOrientationPortraitUpsideDown)
    {
        animatedDistance = floor(PORTRAIT_KEYBOARD_HEIGHT * heightFraction);
    }
    else
    {
        animatedDistance = floor(LANDSCAPE_KEYBOARD_HEIGHT * heightFraction);
    }
 
	CGRect viewFrame = self.view.frame;
    viewFrame.origin.y -= animatedDistance;
 
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];
 
    [self.view setFrame:viewFrame];
 
    [UIView commitAnimations];
}

at textFieldDidEndEditing event

- (void)textFieldDidEndEditing:(UITextField *)textField {
    CGRect viewFrame = self.view.frame;
    viewFrame.origin.y += animatedDistance;
 
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];
 
    [self.view setFrame:viewFrame];
 
    [UIView commitAnimations];
}

This event is textfield resign responder, once you press the return keypad it will hide the keyboard, this is important to test if the view will come back to its previous state.

-(BOOL)textFieldShouldReturn:(UITextField *) textField
{
	[textField resignFirstResponder];
	return YES;
}
Demo.
Get the Flash Player to see this player.


Download the Source

iPhone Developing

December 16th, 2009

As a programmer me and my client Captain Coralyn will try our luck now with Developing.

iPhones, iMac

iPhone Books