iPhone 上带有图像背景的自动换行文本字段?
-
06-07-2019 - |
题
有谁知道如何创建一个具有 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。
不隶属于 StackOverflow