Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将CGRect从UITextView中删除_Ios_Uitextview_Cgrect - Fatal编程技术网

Ios 将CGRect从UITextView中删除

Ios 将CGRect从UITextView中删除,ios,uitextview,cgrect,Ios,Uitextview,Cgrect,这听起来一定很奇怪,但我想把键盘的CGRect从UITextView中去掉。这里有一张图片可以帮助您: 我基本上希望UITextView变小,这样当我添加文本时,它会向下滚动。如果你需要更多信息,请问我 编辑:当我使用此代码时: - (void)keyboardWasShown:(NSNotification*)notification { NSDictionary* info = [notification userInfo]; kbSIZE = [[info obj

这听起来一定很奇怪,但我想把键盘的CGRect从UITextView中去掉。这里有一张图片可以帮助您:

我基本上希望UITextView变小,这样当我添加文本时,它会向下滚动。如果你需要更多信息,请问我

编辑:当我使用此代码时:

- (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.帮我解决了这个问题。不仅不奇怪,而且更喜欢自己的行为。当应用程序不能做到这一点时,我会很恼火,你必须关闭键盘才能看到最后一点视图。(通常为表视图)