UIKeyboardDidHideNotification错误应用程序崩溃

时间:2012-12-08 13:29:54

标签: iphone objective-c ios

我正在使用UIView。该应用程序正在使用ARC。 UIView用于多个视图控制器。在UIView中添加了UIKeyboardDidHideNotification的监听器。监听器与某些视图控制器和其他视图控制器一起正常工作,它会使应用程序崩溃。特别是当我在第一个使用后在第二个视图控制器中使用。错误是

  

* - [appname keyboardWillHide]:发送到解除分配的实例0xb9c2760的消息

在某些情况下,监听器被调用两次。

我在uiview drawrect方法中添加的代码是:

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

侦听器的代码是

-(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;

    }
}

uiview出现在调用视图控制器的顶部。请告诉我导致此错误的原因以及解决方法。

1 个答案:

答案 0 :(得分:1)

由于内存警告,您的视图正在卸载。你需要覆盖dealloc方法&删除观察者,查看您添加观察者通知的所有视图中的所有通知。

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