Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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
Iphone 选中textview时,UITextview内容向上移动_Iphone_Scroll_Uitextview - Fatal编程技术网

Iphone 选中textview时,UITextview内容向上移动

Iphone 选中textview时,UITextview内容向上移动,iphone,scroll,uitextview,Iphone,Scroll,Uitextview,我对iphonedev这个东西很陌生,但到目前为止,我已经开发了一个相当好的应用程序,但我却意外地遇到了这个问题,而对于我来说,我似乎无法解决这个问题 该应用程序基本上是社交网站的聊天应用程序。除了当前为UITextbox的输入框外,所有功能均100%正常工作。这工作很好,但我希望该框增长,成为一个多行UITextbox与滚动。我用UITextview替换了UITextbox,一切都很好。当用户输入文本时,我的UITextview正在扩展,但是有一个小问题让我发疯 当UITextview获得焦点

我对iphonedev这个东西很陌生,但到目前为止,我已经开发了一个相当好的应用程序,但我却意外地遇到了这个问题,而对于我来说,我似乎无法解决这个问题

该应用程序基本上是社交网站的聊天应用程序。除了当前为UITextbox的输入框外,所有功能均100%正常工作。这工作很好,但我希望该框增长,成为一个多行UITextbox与滚动。我用UITextview替换了UITextbox,一切都很好。当用户输入文本时,我的UITextview正在扩展,但是有一个小问题让我发疯

当UITextview获得焦点时,它会将光标和其中的任何文本向上移动,使其离开视图。默认情况下,我将UITextview设置为显示2行,然后当文本高度超过这两行时,我希望框变大(确实如此),并且文本保持向上滚动,以便您可以看到正在键入的内容。如果你看看iPhone上的短信应用程序,这正是我希望它的工作方式

任何智慧之言都将不胜感激。

请查看:

Three20是iPhone UI类(如照片查看器)和通用实用程序(如HTTP磁盘缓存)的集合。Three20源于Facebook的iPhone应用程序,这是有史以来下载最多的iPhone应用程序之一

具体来说,您需要了解:

TTTextEditor是一个UITextView,可以在键入时自动增加高度。我用它在Facebook聊天中输入信息,它的行为与苹果短信应用程序中的编辑器类似。

您将找到有关如何向项目中添加three20的说明。

请查看:

Three20是iPhone UI类(如照片查看器)和通用实用程序(如HTTP磁盘缓存)的集合。Three20源于Facebook的iPhone应用程序,这是有史以来下载最多的iPhone应用程序之一

具体来说,您需要了解:

TTTextEditor是一个UITextView,可以在键入时自动增加高度。我用它在Facebook聊天中输入信息,它的行为与苹果短信应用程序中的编辑器类似。


您将找到如何在项目中添加three20的说明。

我认为Blaenk的回答非常完美(这将是我的答案)。但为了防止您不想在项目中包含Three20(它有点大),下面是TTTextEditor的相关代码。您应该能够从展开文本视图的任何位置调用此函数

- (void)scrollContainerToCursor:(UIScrollView*)scrollView {
  if (_textView.hasText) {
    if (scrollView.contentSize.height > scrollView.height) {
      NSRange range = _textView.selectedRange;
      if (range.location == _textView.text.length) {
        [scrollView scrollRectToVisible:CGRectMake(0,scrollView.contentSize.height-1,1,1)
          animated:NO];
      }
    } else {
      [scrollView scrollRectToVisible:CGRectMake(0,0,1,1) animated:NO];
    }
  }
}

我认为布兰克的回答很完美(这将是我的答案)。但为了防止您不想在项目中包含Three20(它有点大),下面是TTTextEditor的相关代码。您应该能够从展开文本视图的任何位置调用此函数

- (void)scrollContainerToCursor:(UIScrollView*)scrollView {
  if (_textView.hasText) {
    if (scrollView.contentSize.height > scrollView.height) {
      NSRange range = _textView.selectedRange;
      if (range.location == _textView.text.length) {
        [scrollView scrollRectToVisible:CGRectMake(0,scrollView.contentSize.height-1,1,1)
          animated:NO];
      }
    } else {
      [scrollView scrollRectToVisible:CGRectMake(0,0,1,1) animated:NO];
    }
  }
}

为此,我创建了UITextView的子类:

它是一个基于自动布局的轻量级UITextView子类,它根据用户输入的大小自动增长和收缩,并且可以受最大和最小高度的约束—所有这些都不需要一行代码


该类主要用于Interface builder,仅适用于自动布局。

我为UITextView创建了一个子类,仅用于此:

它是一个基于自动布局的轻量级UITextView子类,它根据用户输入的大小自动增长和收缩,并且可以受最大和最小高度的约束—所有这些都不需要一行代码


该类主要用于Interface builder,仅适用于自动布局。

感谢Benjamin,我使用了您在上面发布的内容,并获取了使我的框工作所需的内容。虽然做了一些修改,但最终我还是成功地让它按我需要的方式工作。谢谢本杰明,我用了你上面贴的东西,并用了我需要的东西来让我的盒子工作。虽然做了点小动作,但最后我还是设法让它按我需要的方式工作。谢谢你的指点。我绝对可以用这样的东西。目前的项目是第一阶段,将是第二阶段的基本版本。我将在项目的第二阶段研究如何使用该框架。谢谢你们两位的帮助。我真的很感激。谢谢你的指点。我绝对可以用这样的东西。目前的项目是第一阶段,将是第二阶段的基本版本。我将在项目的第二阶段研究如何使用该框架。谢谢你们两位的帮助。我真的很感激。