将uitextfield的第一响应者更改为uitextview时发生死锁

在这里有一个非常奇怪的问题,这并没有发生在iOS 7之前…

我有一个uitextfield和uitextview在我创build的forms…问题是,如果用户有作为第一响应者的文本字段然后点击uitextview发生死锁,内存将增加,直到看门狗杀死我的应用程序。

当我从uitextview更改为uitextfield时,不会发生这种情况

相关代码:

#pragma mark - UITextView Delegate -(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { if ([text isEqualToString:@"\n"]) { [textView resignFirstResponder]; } NSUInteger newLength = [textView.text length] + [text length] - range.length; return (newLength > 120) ? NO : YES; } -(void)textViewDidEndEditing:(UITextView *)textView { if (textView.tag == CreatePlaceElementDescription) { self.marker.info = textView.text; } else if (textView.tag == CreatePlaceElementAddress) { self.marker.address = textView.text; } } #pragma mark - UITextField Delegate - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { if ([string isEqualToString:@"\n"]) { [textField resignFirstResponder]; } NSUInteger newLength = [textField.text length] + [string length] - range.length; //Limit name textfield length return (newLength > 60) ? NO : YES; } -(void)textFieldDidEndEditing:(UITextField *)textField { if (textField.tag == CreatePlaceElementName) { self.marker.name = textField.text; } } 

没有比这更多的东西了…

如果我先辞职第一响应者,这个问题不会发生,但它会让用户点击两次textview,这是不受欢迎的。

此外,死锁发生在textview:didEndEditing,(如果textview是一个辞职的键盘不是文本框,textfield:didEndEditing也被称为)。textview:didEndEditing不应该被称为任何地方

它真的让我难以置信…有什么build议吗?

我只是设法修改DAKeyboardControl.m中的方法inputKeyboardDidShow,如下所示:

 - (void)inputKeyboardDidShow { // Grab the keyboard view if(self.keyboardActiveInput.inputAccessoryView.superview){ self.keyboardActiveView = self.keyboardActiveInput.inputAccessoryView.superview; self.keyboardActiveView.hidden = NO; } // If the active keyboard view could not be found (UITextViews...), try again if (!self.keyboardActiveView) { // Find the first responder on subviews and look re-assign first responder to it [self reAssignFirstResponder]; } } 

好吧,我有什么问题

我正在使用DaKeyboardControl来调整键盘出现时的意见…有什么奇怪的是,似乎这是iOS 7中改变第一响应者时(当它只会有一个textview /文本字段时不会进入死锁)。 。我打开一个BUG报告给他们的githubs,而我认为哪一行是产生这个错误…当我有它,我会分享它与你编辑

编辑:问题是在UIKeyboardWillShowNotification接收器…这个通知被调用多次…解决scheme似乎是使用UIKeyboardDidChangeFrameNotification或UIKeyboardWillChangeFrameNotification执行帧的更改…

我希望这可以帮助别人…不知道如果使用UIKeyboardWillShowNotification会给现在不使用iOS 7的人带来麻烦