У меня есть UIImageView
in UIScrollView
, чтобы позволить пользователю увеличить изображение. Нет проблем в этой части. Я использую следующий код для этого:
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return self.imageView
}
Кроме того, пользователи могут иметь возможность закреплять некоторые местоположения на одном и том же изображении. Я использую следующий код для закрепления изображения, и это также не проблема.
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
let touch = touches.first!
let location = touch.location(in: self.imageView)
let touchedRect = CGRect(x: location.x - 10, y: location.y - 10, width: 20, height: 20)
let touchedInCourt = touchedRect.intersects(self.imageView.bounds)
switch touchedInCourt {
case true:
if self.imageView.subviews.count > 0 {
var flagForIntersect = false
for subview in self.imageView.subviews {
let subviewFrame = subview.frame
if subviewFrame.intersects(touchedRect) {
subview.removeFromSuperview()
flagForIntersect = true
}
}
if !flagForIntersect {
addDot(withLocation: location, toPhoto: self.imageView)
}
} else {
addDot(withLocation: location, toPhoto: self.imageView)
}
case false: break
}
}
func addDot(withLocation location: CGPoint, toPhoto photo: UIImageView) {
let frame = CGRect(x: location.x - 15, y: location.y - 15, width: 30, height: 30)
let tempImageView = UIImageView(frame: frame)
tempImageView.image = UIImage(named: "Blue Dot")
photo.addSubview(tempImageView)
}
Использование этих двух частей в одном UIImageView
вызывает проблему.
Если scrollView.userInteractionEnable = true
,
зум работает, но функция touchsEnded не вызывается. С другой стороны, если scrollView.userInteractionEnable = false
дотрагивается до функции округления, но зум не работает.
touch.location(in:)
функция действительно полезна для меня, поэтому я не хочу переключаться с UITouch
на UITapGestureRecognizer
.
Есть ли способ сделать эти две части, используя UITouch
?