如何在 ios 中为 UITextView 设置内容插入

Posted

技术标签:

【中文标题】如何在 ios 中为 UITextView 设置内容插入【英文标题】:How to set content inset for UITextView in ios 【发布时间】:2013-09-28 10:04:21 【问题描述】:

我有一个 UITextView 并将内容插入设置为

[atextView setContentInset:UIEdgeInsetsMake(0, 10, 0, 0)];

此代码在 ios 6.1 及更低版本中有效,但在 iOS 7.0 中没有任何反应。

【问题讨论】:

有没有办法做到这一点在故事板?! 你试过更新答案了吗? 是的,在 Joe Blow 下方查看我的解决方案 @BencePattogato 感谢您的更新。 【参考方案1】:

得到答案:

[atextView  setTextContainerInset:UIEdgeInsetsMake(7, 7, 0, 0)];

解决了我的问题。

在 Swift 中...

@IBOutlet var tv:UITextView!
override func awakeFromNib() 
    super.awakeFromNib()
    tv.textContainerInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)

更新:另一种选择。

UIView *spacerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)];
[msgtext setLeftViewMode:UITextFieldViewModeAlways];
[msgtext setLeftView:spacerView];

【讨论】:

嘿@murugha23,我需要你帮助你解决IOS7中的textview setContentInset问题 替换 setTextContainerInset 而不是 setContentInset。如果你想提供以前版本的ios,那么检查一个条件寄存器,当前设备系统版本 如果你能提供一个你的类的示例代码就好了,包括键盘和textview的各种方法,让我有一个清晰的想法 其实你的问题是什么?是设置不当还是完全没有设置? 是的,我很快就会发布问题和发布链接【参考方案2】:

通过继承 UITextField 并添加 @IBInspectable 插入属性,这是一种替代方法,也许更方便一点。

import UIKit

class UITextfieldWithInset: UITextField 

    @IBInspectable
    var textfieldInset: CGPoint = CGPointMake(0, 0)

    override func textRectForBounds(bounds: CGRect) -> CGRect 
        return CGRectInset(bounds, textfieldInset.x, textfieldInset.y)
    

    override func editingRectForBounds(bounds: CGRect) -> CGRect 
        return CGRectInset(bounds, textfieldInset.x, textfieldInset.y)
    

    override func placeholderRectForBounds(bounds: CGRect) -> CGRect 
        return CGRectInset(bounds, textfieldInset.x, textfieldInset.y)
    


【讨论】:

这是UITextField 的一个很好的答案,但问题是关于UITextView

以上是关于如何在 ios 中为 UITextView 设置内容插入的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中的 UITextView 中添加占位符文本?

如何在 iOS 中为文本字段设置数字范围?

如何在 UITextView 中为文本着色

如何在儿童版块中为 iOS 应用设置家长门

如何根据手机的边框在自动布局中为应用内键盘设置不同的位置?

当我点击UITextView时,如何让我的iOS应用程序显示东部阿拉伯语小数点?