这里有一个非常奇怪的问题,这在iOS 7之前没有发生......
我在我创建的表单中有一个uitextfield和uitextview ...问题是,如果用户将文本字段作为第一响应者然后点击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,textfield:didEndEditing也被调用了).. textview:didEndEditing不应该在任何地方调用
它真的令人难以置信......有什么建议吗?
答案 0 :(得分:1)
我只是通过在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];
}
}
答案 1 :(得分:0)
好的我有什么问题
我正在使用DaKeyboardControl在键盘出现时调整视图...奇怪的是,在更改第一响应者时,它似乎在iOS 7上被破坏(当只有一个textview / textfield存在时,它不会进入死锁状态)...我正在向他们的githubs打开一个BUG报告,而我知道哪条线产生了这个错误......当我拥有它时,我将与你一起编辑它
编辑:问题出现在UIKeyboardWillShowNotification接收器上......这个通知被多次调用......似乎是使用UIKeyboardDidChangeFrameNotification或UIKeyboardWillChangeFrameNotification来执行框架更改...我希望这可以帮助某人......不知道UIKeyboardWillShowNotification的使用是否会给不使用iOS 7的人带来问题