Ios 将CGRect从UITextView中删除
这听起来一定很奇怪,但我想把键盘的CGRect从UITextView中去掉。这里有一张图片可以帮助您: 我基本上希望UITextView变小,这样当我添加文本时,它会向下滚动。如果你需要更多信息,请问我 编辑:当我使用此代码时:Ios 将CGRect从UITextView中删除,ios,uitextview,cgrect,Ios,Uitextview,Cgrect,这听起来一定很奇怪,但我想把键盘的CGRect从UITextView中去掉。这里有一张图片可以帮助您: 我基本上希望UITextView变小,这样当我添加文本时,它会向下滚动。如果你需要更多信息,请问我 编辑:当我使用此代码时: - (void)keyboardWasShown:(NSNotification*)notification { NSDictionary* info = [notification userInfo]; kbSIZE = [[info obj
- (void)keyboardWasShown:(NSNotification*)notification {
NSDictionary* info = [notification userInfo];
kbSIZE = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
CGRect newTextViewFrame = self.notesTextView.frame;
newTextViewFrame.size.height -= kbSIZE.size.height;
self.notesTextView.frame = newTextViewFrame;
}
发生这种情况:
一点也不奇怪。当您打开键盘时,TableView也经常发生同样的情况。这段代码应该会有帮助
CGRect newTextViewFrame = textView.frame;
newTextFrame.size.height -= keyboardSize.frame.size.height;
textView.frame = newScrollFrame;
这一点也不奇怪:)
您可以通过注册为UIKeyboardWillShowNotification
的观察者来完成此操作(最好也在同一过程中注册UIKeyboardWillHideNotification
)
调用已注册的选择器时,通知参数将包含UIKeyboardFrameEndUserInfoKey
词典的userInfo
值内的键盘大小:
[[[notification userInfo]objectForKey:UIKeyboardFrameEndUserInfoKey]CGRectValue].size
现在只需将UITextView的框架设置为所需的大小
请注意:您得到的CGRect没有考虑设备方向。这意味着,如果设备实际上处于横向模式,您需要切换CGRect的宽度和高度,以使其在您的上下文中有意义。对不起,我说的是scrollView,意思是textView。此后,我对答案进行了编辑,以反映这一点。将您位于键盘上方的视图的高度加回去,这应该可以解决问题。调用textView.inputAccessoryView.frame.size.height并将该值加回去。在显示键盘之前,您的UITextField是否一直到视图的底部?如果使用
UIKeyboardFrameEndUserInfoKey
而不是UIKeyboardFrameBeginUserInfoKey
,会怎么样?此外,您可以按Command+S自动拍摄模拟器的屏幕截图。是的,它位于底部,是一个UITextView。然后您需要找出值不相加的原因。此外,我看到您在键盘上添加了自定义inputAccessoryView。由于它只显示一个“完成”按钮,我建议将其删除。“返回”按钮应该可以在键盘上完成这项工作,或者如果你想在外面轻触键盘时关闭键盘,一个简单的UIGestureRecognitor就可以了。谢谢你的帮助。亚当·G.帮我解决了这个问题。不仅不奇怪,而且更喜欢自己的行为。当应用程序不能做到这一点时,我会很恼火,你必须关闭键盘才能看到最后一点视图。(通常为表视图)