我如何增加 inputAccessoryView 的高度

2023-12-26

我在这个问题上花了几天时间,但没有看到解决方案。

我有一个inputAccessoryView其中包括一个UIView含有一个textView和两个按钮。的行为inputAccessoryView符合预期,并且在除一种情况外的所有情况下都工作正常。

当textView的高度增加时,我试图增加textView的高度inputAccessoryView相同的数量。当我重新定义高度时inputAccessoryView in textViewDidChange, the inputAccessoryView向下而不是向上增加键盘上方的高度。

我尝试了很多不同的建议,但没有任何效果。我猜是自动添加的NSLayoutConstraint of the inputAccessoryView但我不知道如何在 swift 和 iOS 8.3 中更改该值。

func textViewDidChange(textView: UITextView) {

    var contentSize = messageTextView.sizeThatFits(CGSizeMake(messageTextView.frame.size.width, CGFloat.max))

    inputAccessoryView.frame.size.height = contentSize.height + 16

}

adding

inputAccessoryView.setTranslatesAutoresizingMaskIntoConstraints(true)

上面的代码有帮助,并且 inputAccessoryView 高度正确地向上增加,但是我无法同时满足多个约束的约束,并且很难识别违规者。另外,我得到了一个奇怪的效果,即 textView 在新行的每个第二个实例下面创建额外的空间。

thanks.


要使输入附件视图垂直增长,您只需设置其autoresizingMask = .flexibleHeight,计算其intrinsicContentSize让框架完成剩下的工作。

代码:

class InputAccessoryView: UIView, UITextViewDelegate {

    let textView = UITextView()

    override init(frame: CGRect) {
        super.init(frame: frame)

        // This is required to make the view grow vertically
        self.autoresizingMask = UIView.AutoresizingMask.flexibleHeight

        // Setup textView as needed
        self.addSubview(self.textView)
        self.textView.translatesAutoresizingMaskIntoConstraints = false
        self.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[textView]|", options: [], metrics: nil, views: ["textView": self.textView]))
        self.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[textView]|", options: [], metrics: nil, views: ["textView": self.textView]))

        self.textView.delegate = self

        // Disabling textView scrolling prevents some undesired effects,
        // like incorrect contentOffset when adding new line,
        // and makes the textView behave similar to Apple's Messages app
        self.textView.isScrollEnabled = false
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override var intrinsicContentSize: CGSize {
        // Calculate intrinsicContentSize that will fit all the text
        let textSize = self.textView.sizeThatFits(CGSize(width: self.textView.bounds.width, height: CGFloat.greatestFiniteMagnitude))
        return CGSize(width: self.bounds.width, height: textSize.height)
    }

    // MARK: UITextViewDelegate

    func textViewDidChange(_ textView: UITextView) {
        // Re-calculate intrinsicContentSize when text changes
        self.invalidateIntrinsicContentSize()
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我如何增加 inputAccessoryView 的高度 的相关文章

随机推荐

  • Android - 具有多个底部导航菜单的导航组件

    我有一个 Android 应用程序 Java 它使用导航组件来设置底部导航 该应用程序由一个活动 主 组成 其他所有内容都以片段形式加载 这个想法是让启动屏幕启动并检查用户是否登录 如果用户登录 则加载主屏幕并且底部导航 之前隐藏 变得可见
  • C# - 编译器错误 - 将 int[] 分配给 object[] 时

    namespace ConsoleApplication1 class Program static void Main string args object obj new object 3 obj 0 new object obj 1
  • 为什么在 c 中嵌入 python 时无法导入“math”库?

    我正在使用 python 2 6 文档中的示例开始尝试在 C 中嵌入一些 python C 代码示例 http docs python org extending embedding html pure embedding不允许我执行以下
  • 设置可选的禁用属性

    我想禁用表单中的所有字段 这些字段在加载页面时具有值 例如在这个 td Html TextBoxFor m gt m PracticeName new style width 100 disabled Model PracticeName
  • Windows 8 上的 WP7 SDK

    是否可以在 Windows 8 Release Preview 上安装 WP7 SDK 我尝试使用标准安装包 http www microsoft com en us download details aspx id 29233但不断收到以
  • 如何使用fortran读取不规则行

    我有一个格式如下的文本文件 1 2 3 4 5 6 7 对于许多行等等 我运行这个 fortran 程序 i 1 tt 1 do while true read unit 1 IOSTAT status lon i tt lat i tt
  • 将表列移动到新表并在 PostgreSQL 中作为外键引用

    假设我们有一个包含字段的数据库表 id category subcategory brand name description etc 创建单独的表的好方法是什么category subcategory and brand以及原始表中相应的
  • 使用 Django Rest Framework 从模型序列化属性(getter 和 setter)时出现问题

    我想在序列化器中使用我的模型中的属性 包括设置器 但显然 设置器从未被调用 模型 py class Awesome models Model value models TextField def set value self value s
  • 将 NavigationView 背景更改为圆形在按下时不起作用

    我正在使用设置导航项背景app itemBackground在布局中
  • 如何从命令行覆盖 grails 配置

    我正在尝试覆盖dataSource url从命令行运行 grails 的值 示例 grails
  • 错误:包路径 ./compat 未从包中导出

    Note 我想我能够重现这个 参见堆栈闪电战示例 https stackblitz com edit angular fire start np32w7 file app 2Fapp component ts 错误在控制台中打印为 INTE
  • 如何在 SSIS 中的执行 SQL 任务中使用参数映射?

    我正在尝试检索的值Key通过 SSIS 中的简单 select 语句从表中获取Execute SQL Task 但没有运气找出这个错误 我使用了一个字符串数据类型的输入变量 并在参数映射中使用了该变量Execute SQL Task 执行查
  • 具有墓碑的哈希表的负载因子

    那么问题来了 在计算哈希表的负载因子时是否应该包括墓碑 我认为 考虑到负载系数是用来确定何时扩展容量的 所以不应该包括墓碑 一个明显的例子是 如果您几乎填充然后删除哈希表中的每个值 这里的插入非常容易 没有碰撞 所以我相信负载因子不应该包括
  • laravel phpunit 测试与 api 令牌身份验证

    如何在 phpunit 中添加授权标头 我正在测试需要 api token 的 json api laravel 文档提供了actingAs 方法 但这在我的情况下不起作用 因为 api 令牌与用户表不直接相关 EDIT public fu
  • 无法从 Objective-C 视图控制器访问 Swift var - iOS

    我有一个带有 Objective C 和基于 Swift 的视图控制器的应用程序 我正在以编程方式从我的一个基于 Objective C 的视图控制器之一打开一个基于 Swift 的视图控制器 我遇到的问题是我无法从 Objective C
  • 返回带有准备好的语句的时间戳

    我有一个自动生成的时间戳 每次在 mysql 表中插入或更新记录时都会创建该时间戳 有没有办法以类似于我使用密钥持有者返回新创建的 id 的方式返回此时间戳 KeyHolder keyHolder new GeneratedKeyHolde
  • Liferay集群[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您知道有关在 Glassfish 中安装 Liferay 集群的分步教程吗 谷歌给我找到了这篇文章 名为
  • Android布局动画在ImageView上从下到上和从上到下单击

    我在 Android 中创建了一个视图 我需要从下到上对其进行动画处理 反之亦然 当我点击ImageView我需要制作完整的动画RelativeLayout从下到上 就成功了 但是当我再次点击ImageView而且它并没有向下移动 另外 当
  • Morris.js 条形图未渲染悬停在文本上

    我正在使用 Morris js 条形图 由于某种原因 本应出现在 HOVER OVER 上的数字列在左下角 有人知道为什么吗 如果没有任何代码 很难给出一个好的答案 但是 它可能与您的 CSS 文件有关 莫里斯用它来放置胡佛 CSS mor
  • 我如何增加 inputAccessoryView 的高度

    我在这个问题上花了几天时间 但没有看到解决方案 我有一个inputAccessoryView其中包括一个UIView含有一个textView和两个按钮 的行为inputAccessoryView符合预期 并且在除一种情况外的所有情况下都工作