KeyBoard隐藏通知调用多次

时间:2015-09-23 12:20:11

标签: ios objective-c iphone

Sir On Tap Gesture我隐藏了键盘。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.view endEditing:YES];
}

他们工作正常。但是当我们第二次编辑textView时。   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillBeHidden:) name:UIKeyboardWillHideNotification object:nil];多次拨打电话。他们在keyboardWillBeHidden中执行我的代码5-6次。他们以任何方式在textview开始编辑时都不会打电话。

- (void)textViewDidBeginEditing:(UITextView *)textView
{

    if ([textView.text isEqualToString:@"Type your message Here..."]) {
        textView.text = @"";
        textView.textColor = [UIColor grayColor]; //optional
    }

    [self scrollToBottomAnimated:YES];
  }
- (void)scrollToBottomAnimated:(BOOL)animated
{
    NSInteger rows = [tableViews numberOfRowsInSection:0];
    if(rows > 0) {
        [tableViews scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:rows - 1 inSection:0]
                          atScrollPosition:UITableViewScrollPositionBottom
                                  animated:animated];
    }
}

1 个答案:

答案 0 :(得分:1)

这取决于您使用NSNotificationCenter注册键盘通知的位置和次数。

如果要在viewwillappear中添加观察者并在viewwilldisappear中删除观察者。

如果要在viewdidload中添加观察者,请在dealloc调用中删除observer。

只是尝试更改注册通知的位置。要确保只有viewController可见是接收通知的控制器,请在vieWillAppear中注册通知并删除viewWillDisappear中的通知。

这也将解决您多次调用代码的问题。