【发布时间】:2018-04-03 15:56:00
【问题描述】:
我想限制 UITextView 只能移动到另一个视图的框架的区域。我尝试使用以下代码来完成此操作,但是,它不会正确限制用户可以拖动 UITextView 的位置:
@IBOutlet weak var canvas: UIView!
@IBAction func handleDragOfCaption(_ sender: UIPanGestureRecognizer) {
if sender.state == .began || sender.state == .changed {
guard let senderView = sender.view else {return}
let translation = sender.translation(in: sender.view)
let x = senderView.center.x + translation.x
let y = senderView.center.y + translation.y
let point = CGPoint(x: x, y: y)
if canvas.frame.contains(point) {
senderView.center = point
sender.setTranslation(CGPoint.zero, in: senderView)
}
}
}
请参阅下图,了解我正在尝试完成的工作。我只希望用户能够在 UIView 的边界内拖动 UITextView(这是 UITextView 下方的白色方块)。任何帮助将不胜感激。
【问题讨论】:
-
尝试搜索一下 - 这个问题已经回答了很多次了。这里只是一个例子:stackoverflow.com/questions/47413817/…
-
@DonMag,我实际上遵循了人们在这里所说的但没有运气:stackoverflow.com/questions/12048525/…
-
您还要做的是跟踪
sender.state == .ended || sender.state == .cancelled的时间,如果textView超出范围,则对 x、y(或两者)进行编程翻译,直到它完全在界限。 -
@itsfaraaz - 你的文本视图是固定大小的吗?还是只是固定宽度?并且您希望能够在白色矩形内拖动它,而不是在图像顶部?