Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.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 键入长文本时,textview会按输入比例追加空格_Ios_Swift - Fatal编程技术网

Ios 键入长文本时,textview会按输入比例追加空格

Ios 键入长文本时,textview会按输入比例追加空格,ios,swift,Ios,Swift,我正在获取文本视图文本(我正在书写的文本视图)的大小,并将其设置为显示文本视图的大小。但是如果我写更长的文本,当我发布它时,它会在我的文本视图中显示更长的空白。我通过测量我正在写的文本的content.height,为文本视图的大小编写了代码 } else if identifier == "save" { print("Save button tapped") if textViewWrite.text == "" { print("t

我正在获取文本视图文本(我正在书写的文本视图)的大小,并将其设置为显示文本视图的大小。但是如果我写更长的文本,当我发布它时,它会在我的文本视图中显示更长的空白。我通过测量我正在写的文本的content.height,为文本视图的大小编写了代码

} else if identifier == "save" {
        print("Save button tapped")

        if textViewWrite.text == "" {
            print("text empty")
        }
        else{

            print("\(textViewWrite.contentSize.height)")



            let size: CGSize = textViewWrite.sizeThatFits(CGSize.init(width: textViewWrite.frame.size.width, height: CGFloat.greatestFiniteMagnitude))
            let insets: UIEdgeInsets = textViewWrite.textContainerInset;
            let relevantHeight = size.height - insets.top - insets.bottom;

            let text = Post(texts: "String", textHeight: relevantHeight, textWidth: textViewWrite.contentSize.width)
            PostService.create(text: self.textViewWrite.text!, height: Int(textViewWrite.contentSize.height), width: Int(view.frame.width) )
            print("\(textViewWrite.contentSize.height)")

            // 1
            let HomeViewController = segue.destination as! HomeViewController
            // 2
            HomeViewController.posts.append(text)

        }
        textViewWrite.text = ""
    }
}

我以前见过您使用的方法,但是出于您的目的,我认为最好使用。在我看来,这要容易得多

您要做的是使用布局约束约束接收文本视图的高度特性

在接收文本视图中,尝试设置布局约束,如

let captionContainer: UIView = {
    let c = UIView()
    c.translatesAutoresizingMaskIntoConstraints = false
    c.backgroundColor = UIColor.lightGray
    c.layer.cornerRadius = 6
    return c
}()

let caption: UITextView = {
    let c = UITextView()
    c.textAlignment = .left
    c.font = .systemFont(ofSize: 14)
    c.isScrollEnabled = false
    c.translatesAutoresizingMaskIntoConstraints = false
    return c
}()

func setupCaption() {

    view.addSubview(captionContainer)
    view.addSubview(caption)

    //Container Constratins
    captionContainer.widthAnchor.constraint(equalToConstant: 250).isActive = true
    captionContainer.heightAnchor.constraint(equalTo: caption.heightAnchor, multiplier: 1).isActive = true
    captionContainer.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    captionContainer.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true

    //Caption Constraints
    caption.widthAnchor.constraint(equalToConstant: 250).isActive = true
    caption.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    caption.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true

    // This constraint controls the maximum height the caption can have.
    NSLayoutConstraint(item: caption, attribute: .height, relatedBy: .lessThanOrEqual, toItem: view, attribute: .height, multiplier: 0.25, constant: 0).isActive = true
}
然后将标题文本设置为用于用户输入的文本字段或文本视图


祝你好运。

我以前见过你使用的方法,但是出于你的目的,我认为最好使用。在我看来,这要容易得多

您要做的是使用布局约束约束接收文本视图的高度特性

在接收文本视图中,尝试设置布局约束,如

let captionContainer: UIView = {
    let c = UIView()
    c.translatesAutoresizingMaskIntoConstraints = false
    c.backgroundColor = UIColor.lightGray
    c.layer.cornerRadius = 6
    return c
}()

let caption: UITextView = {
    let c = UITextView()
    c.textAlignment = .left
    c.font = .systemFont(ofSize: 14)
    c.isScrollEnabled = false
    c.translatesAutoresizingMaskIntoConstraints = false
    return c
}()

func setupCaption() {

    view.addSubview(captionContainer)
    view.addSubview(caption)

    //Container Constratins
    captionContainer.widthAnchor.constraint(equalToConstant: 250).isActive = true
    captionContainer.heightAnchor.constraint(equalTo: caption.heightAnchor, multiplier: 1).isActive = true
    captionContainer.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    captionContainer.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true

    //Caption Constraints
    caption.widthAnchor.constraint(equalToConstant: 250).isActive = true
    caption.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    caption.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true

    // This constraint controls the maximum height the caption can have.
    NSLayoutConstraint(item: caption, attribute: .height, relatedBy: .lessThanOrEqual, toItem: view, attribute: .height, multiplier: 0.25, constant: 0).isActive = true
}
然后将标题文本设置为用于用户输入的文本字段或文本视图


祝你好运。

这个问题听起来像是一个包含大量文本的绕口令。为了说明这一点,我有两个文本视图。1=我正在写文章的文本视图(文本视图)。2=我正在显示帖子的文本视图(textViewWrite)。现在,如果我在第一个文本视图中写更长的文本,它会发布帖子,但在第二个文本视图中也会发布更长的空白textV@MahdiaDaqiq你能提供一张这个的屏幕截图吗?@Stefan我在顶部添加了一张图片,你可以点击该行的空白处查看图片好的,如果我错了,请纠正我。您需要一个自调整大小的文本视图,该视图根据从另一个文本视图获取的文本调整大小。这是正确的吗?这个问题听起来像是一个包含大量文本的绕口令。为了说明这一点,我有两个文本视图。1=我正在写文章的文本视图(文本视图)。2=我正在显示帖子的文本视图(textViewWrite)。现在,如果我在第一个文本视图中写更长的文本,它会发布帖子,但在第二个文本视图中也会发布更长的空白textV@MahdiaDaqiq你能提供一张这个的屏幕截图吗?@Stefan我在顶部添加了一张图片,你可以点击该行的空白处查看图片好的,如果我错了,请纠正我。您需要一个自调整大小的文本视图,该视图根据从另一个文本视图获取的文本调整大小。这是正确的吗?