我目前注册了keyboardWillBeHidden
和keyboardFrameDidChange
方法,以便在键盘打开时更改ScrollView的大小。
在我的textViewDidChange
中,我有一些文字来确保光标位于视图中:
if ([textView.text hasSuffix:@"\n"]) {
[CATransaction setCompletionBlock:^{[self scrollToCaretInTextView:self.logText animated:NO];}];
} else {
[self scrollToCaretInTextView:self.logText animated:NO];}
这引用了这种方法:
- (void)scrollToCaretInTextView:(UITextView *)textView animated:(BOOL)animated
{
CGRect rect = [textView caretRectForPosition:textView.selectedTextRange.end];
rect.size.height += textView.textContainerInset.bottom;
[textView scrollRectToVisible:rect animated:animated];
}
如何在此scrollToCaretInTextView
中引用我的通知,以便在键盘启动时更改CGRect?现在它无法识别光标位于键盘下方。
我试图绕过这个,但我需要获得键盘高度,我不知道如何将它应用于此方法,因为它不是NSNotificaiton。
答案 0 :(得分:2)
获取keyboardWillAppear通知,您可以获取动画常量(帧,持续时间,曲线) - 使用它来设置您的scrollview插图。
在你的通知keyboardDidAppear Notification中,在你的键盘动画之后 - 调用scrollToCaretInTextView方法。如果你想滚动到textview,它应该像调用一样简单,[scrollView scrollToRectVisible:textview.frame]
答案 1 :(得分:0)
你能不在内存中保存一个float对象,基本上在.h中声明它然后在使用UIKeyboardDidShowNotification打开键盘时更改float的值,而在scrollToCaretInTextView方法中你会使用那个浮点数吗?