user1531912
user1531912

Reputation: 372

UIKeyboardDidHideNotification error application crashing

I'm using a UIView. The application is using ARC. UIView is used in multiple view controllers. In UIView a listener to the UIKeyboardDidHideNotification is added. The listener works fine with some view controllers and with other view controllers it crashes the application. Especially when I use in the second view contoller after using in the first. The error is

* -[appname keyboardWillHide]: message sent to deallocated instance 0xb9c2760

In some scenarios the listener is getting called twice.

The code i have added in the uiview drawrect method is:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide) name:UIKeyboardWillHideNotification object:nil];

the code for listener is

-(void)keyboardWillHide
{
    if(boolisViewlifted)
    {

            CGRect newFrame=self.frame;
            newFrame=CGRectMake(self.frame.origin.x, self.frame.origin.y+250, self.frame.size.width, self.frame.size.height);
            self.frame=newFrame;
            boolisViewlifted=false;

    }
}

The uiview appears on top of the calling view controller. Please let me know what causes this error and how to solve it.

Upvotes: 2

Views: 751

Answers (1)

Rahul Wakade
Rahul Wakade

Reputation: 4805

Your view is getting unloaded because of memory warnings. You need to override dealloc method & remove observer for all notifications in all views where you added observer for notifications.

//do add in all views
-(void)dealloc
{
     //[super dealloc];//As you are using ARC don't call super's dealloc
     [[NSNotificationCenter defaultCenter] removeObserver:self];
} 

Upvotes: 1

Related Questions