iOS - 如何在方法之外引用键盘通知?

时间:2014-10-30 20:16:19

标签: ios keyboard uitextview nsnotification

我目前注册了keyboardWillBeHiddenkeyboardFrameDidChange方法,以便在键盘打开时更改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。

2 个答案:

答案 0 :(得分:2)

  1. 获取keyboardWillAppear通知,您可以获取动画常量(帧,持续时间,曲线) - 使用它来设置您的scrollview插图。

  2. 在你的通知keyboardDidAppear Notification中,在你的键盘动画之后 - 调用scrollToCaretInTextView方法。如果你想滚动到textview,它应该像调用一样简单,[scrollView scrollToRectVisible:textview.frame]

答案 1 :(得分:0)

你能不在内存中保存一个float对象,基本上在.h中声明它然后在使用UIKeyboardDidShowNotification打开键盘时更改float的值,而在scrollToCaretInTextView方法中你会使用那个浮点数吗?