UITextView keyboardDismissMode错误
我刚刚发现了一个恼人的错误与scroll view
的新keyboardDismissMode
属性。 当在text view
使用UIScrollViewKeyboardDismissModeInteractive
并将其与键盘关联时, scroll view
似乎跳到顶部,然后继续减速。
我已经提交了一个苹果的错误报告,但需要一个解决方法。 我已经尝试了DAKeyboardControl
没有新的iOS7
支持,幕后使用keyboardDismissMode
,它仍然做到这一点,这表明这是一个更深的问题。
有什么build议么?
对于这个问题,你最好使用scrollviewDelegete进行编码,并简单地提及何时需要通过ResignFirstResponderclosures键盘
似乎是一个错误或只是一个非理想的默认状态。 但是根据testing项目中的代码,在进行一些更好的调整之后,下面的代码可能会工作。
示例代码有两个问题,一个是当键盘出现时你没有做任何有关文本大小的事情,所以你不能使用或看到键盘下的文本。 还有其他的解决scheme,但一个快速和肮脏的解决scheme是改变框架的大小(在提交应用程序,我也将抓住animation信息和animation视图框架的变化,以配合键盘animation超出了这个问题的范围)。 你用“willShow”或类似的方法做到这一点,然后把它带回“didHide”之类。
然后,内容偏移量被隐藏,当它被隐藏在屏幕之前和之后,隐藏和滚动视图更改时,出现一些奇怪的状态。 我只保存状态并在键盘消失后“修复”状态,并更新了文本视图。
我在故事板上创build了一些属性和插口,以便与文本视图相配合。
- (void)viewDidLoad { [super viewDidLoad]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow :) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide :) name:UIKeyboardDidHideNotification object:nil]; } - (void)keyboardWillShow:(NSNotification *)通知 { NSDictionary *信息= [通知userInfo]; CGSize size = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue] .size; CGRect rect = self.textView.frame; rect.size.height - = size.height; self.textView.frame = rect; } - (void)keyboardDidHide:(NSNotification *)通知 { NSLog(@“====== keyboardDidHide =======”); NSDictionary *信息= [通知userInfo]; CGSize size = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue] .size; CGRect rect = self.textView.frame; rect.size.height + = size.height; self.textView.frame = rect; self.hidingKeyboard = YES; } - (void)scrollViewDidScroll:(UIScrollView *)scrollView { NSLog(@“%f”,scrollView.contentOffset.y); 如果(self.hidingKeyboard == YES) { scrollView.contentOffset = self.lastOffset; self.hidingKeyboard = NO; NSLog(@“====== reset =======”); } 其他 self.lastOffset = scrollView.contentOffset; }