在我的UIViewController的主视图中,我有一个地图视图和另一个视图(我们称之为A视图),它位于地图视图上方。它们的框架都等于self.view.bounds。A视图是一个可调整大小的矩形,类似于用于裁剪图像的矩形。我的目标是让用户指定地图上的区域。因此,我希望用户能够放大和缩小地图,并更改矩形的宽度和高度比例,因为只允许A视图是不可调整大小的正方形会限制它太多。
我从GitHub https://github.com/justwudi/WDImagePicker 上得到了这个项目,我正在使用可调整大小的矩形功能。在Github链接的第二张图片中,有一个带有8个点和阴影区域的矩形。如果用户触摸阴影区域,我想让触摸传递到位于A视图后面的地图上。只有当用户点击点内部的区域或点上时(这样他就想要调整矩形大小),我才希望A视图识别触摸。因此,我修改了对A视图触摸的代码,现在如下:
我从GitHub https://github.com/justwudi/WDImagePicker 上得到了这个项目,我正在使用可调整大小的矩形功能。在Github链接的第二张图片中,有一个带有8个点和阴影区域的矩形。如果用户触摸阴影区域,我想让触摸传递到位于A视图后面的地图上。只有当用户点击点内部的区域或点上时(这样他就想要调整矩形大小),我才希望A视图识别触摸。因此,我修改了对A视图触摸的代码,现在如下:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = touches.first {
if cropBorderView.frame.contains(touch.location(in: self)){
print("touch contains - touchesbegan")
//self.isUserInteractionEnabled = true
}
else{
print("Touch does not contain - touchesbegan")
self.touchesCancelled(touches, with: event)
//return
}
let touchPoint = touch.location(in: cropBorderView)
anchor = self.calculateAnchorBorder(touchPoint)
fillMultiplyer()
resizingEnabled = true
startPoint = touch.location(in: self.superview)
}
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
print("inside touches moved")
if let touch = touches.first {
if cropBorderView.frame.contains(touch.location(in: self)){
print("touch contains - touchesmoved")
//self.isUserInteractionEnabled = true
}
else{
print("Touch does not contain - touchesmoved ")
self.touchesCancelled(touches, with: event)
//return
}
if resizingEnabled! {
self.resizeWithTouchPoint(touch.location(in: self.superview))
}
}
}
我确实希望能够在内部和外部单击时识别触摸,但是当我在外部单击时它并没有停止触摸。这意味着调用self.touchesCancelled(touches, with: event)
没有起作用。使用return会导致崩溃并且也不起作用。是否有解决此问题的方法?
感谢您的时间和考虑。