Swift:锁定按钮位置,因为它正在被 UITextview 移动?约束问题?
Posted
技术标签:
【中文标题】Swift:锁定按钮位置,因为它正在被 UITextview 移动?约束问题?【英文标题】:Swift: Lock button position because it is being moved by UITextview? Problems with constraints? 【发布时间】:2016-06-08 04:47:03 【问题描述】:我已经到了最后期限,并且已经花了 5 多个小时试图让它工作 - 我遇到了 UITextview 和移动按钮的问题。我还没有找到 1 个有同样问题的答案或帖子。
我在 xib 上放置了一个 unbutton 和一个 uitextview。这些通过“添加缺失约束”按钮在所有设备上“锁定”到位。起初,我将 Unbutton 放在文本字段上(它们的大小相同)。
我有一个函数可以将 UIButton 向上(在 uitextview 上方)或向下(在 textview 上方)移动,具体取决于它是否已被按下:
@IBAction func enterText(sender: UIButton)
print("time to enter text")
if !textOpen
UIView.animateWithDuration(0.5, animations:
self.textBtn.center.y -= self.textBtn.bounds.height
)
else
UIView.animateWithDuration(0.5, animations:
self.textBtn.center.y += self.textBtn.bounds.height
)
textOpen = !textOpen
这是移动 Uibutton 的唯一代码。只有一块。 我正在尝试实现这种效果 - 当按下按钮时,向上移动以显示 textview,以便用户可以编辑文本。再次按下,按钮移回文本视图。像这样:
但是我遇到了一个非常大的问题。按钮向上移动后,如果用户在 textview 中输入,则按钮会弹回原位。或者有时只是偶尔移动。 textview 没有调用enterText
方法,因为没有打印任何内容。我不知道它是如何移动按钮的。
我最初尝试将按钮向上放置,并且在大多数情况下,textview 导致按钮移回此位置(而不是在它上方),所以我认为 textview 将按钮发送回其原始位置,如自动指示设置的布局约束。我不明白这是如何工作的。
我已经尝试了所有方法 - 尝试将按钮和 textview 锁定在一起,调整 textview 的大小,以编程方式创建按钮以避免处理约束。没有任何工作,我需要尽快完成。没有想法了。
该按钮仅在启用 textview 时回弹 - 如果用户无法键入任何内容都不会受到影响。所以我的最后一根稻草 -
有没有办法在编辑文本视图时锁定屏幕上按钮的位置?我知道有一种方法可以检测是否正在输入文本并尝试手动设置 UIButton 的中心 x 和 y 但同样,我认为约束已经推翻了这一点。
还有其他方法可以配置约束以使其工作吗?或者这种效果是不可能的?
【问题讨论】:
【参考方案1】:好的,所以您需要移动“告诉我们发生了什么”按钮。这是你可以做的:
1) 使用“拍照”按钮的顶部为该按钮设置底部约束。最初,它的常数为 0。
2) 现在有了这个约束的出口(假设我将它命名为 bottomConst)并执行以下操作:
@IBAction func enterText(sender: UIButton)
print("time to enter text")
if !textOpen
self.bottomConst.constant = 30 //whatever height your textview has
self.textBtn.setNeedsUpdateConstraints()
else
self.bottomConst.constant = 0
self.textBtn.setNeedsUpdateConstraints()
UIView.animateWithDuration(0.5, delay: 0, options: .CurveEaseInOut, animations:
self.textBtn.layoutIfNeeded()
, completion: nil)
textOpen = !textOpen
希望对你有帮助。
【讨论】:
以上是关于Swift:锁定按钮位置,因为它正在被 UITextview 移动?约束问题?的主要内容,如果未能解决你的问题,请参考以下文章