有谁知道如何创建一个具有 UIImage 背景并自动换行的文本字段?

看来 UITextField 不支持自动换行,而 UITextView 不支持背景图片!此外,它应该更改控件​​的大小,或者至少警告行数发生变化,以便委托可以更改其大小。

此类控制的一个示例是 SMS 应用程序中消息的输入字段。

编辑:代码还应该让文本字段始终显示正在编辑的文本。显然,当 UITextView 在编辑时改变大小时,它会以某种方式失去对当前文本的焦点。

先谢谢了!阿维亚德。

有帮助吗?

解决方案

自动换行在 UITextField 上不可用,因为 UITextField 仅支持单行文本。

使用 UITextView。使textView.backgroundColor = [UIColor clearColor]。首先添加 UIImage,然后在其顶部添加 UITextView。确保尺寸正确,应该没问题。

至于更改 UITextView 的大小,请在 UITextViewDelegate 中执行以下操作:

- (void)textViewDidChange:(UITextView *)textView
{
    NSString *s = textView.text;
    CGSize testSize = CGSizeMake(textView.frame.size.width, NSIntegerMax);
    CGSize neededSize = [s sizeWithFont: textView.font constrainedToSize: testSize     lineBreakMode: UILineBreakModeWordWrap]; // or UILineBreakModeCharacterWrap?

    if (neededSize.height > testSize.height)
    {
        // grow textView
        textView.frame = CGRectMake(textView.frame.origin.x, textView.frame.origin.y, neededSize.width, neededSize.height);

        // then adjust the image size -- something like this
        imageView.frame = textView.frame 
    }

}

其他提示

最终我编写了自己的代码,该代码在某种程度上可以使用很多解决方法(例如更改焦点,再次删除所有文本时调整大小等)。如果有人感兴趣,我将发布代码。

在其他新闻中,就在今天,我在一个不同的问题中看到了一个叫做 IFVerticallyExpandingTextField. 。这个名字很有前途,代码在这里,我来看看。有类似问题的人,您可能也想看看这个。

我的错误是我没有仔细阅读: IFVerticallyExpandingTextField 适用于 Mac,不适用于 iPhone。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top