내 기본보기에서 UIViewController mapView 및 다른보기 (보기 A) mapView 위에 있습니다. 둘 다 self.view.bounds와 같은 프레임을가집니다. 뷰 A는 이미지 자르기에 사용되는 것과 비슷한 크기 조정이 가능한 사각형입니다. 내 목표는 사용자가지도에서 영역을 지정하도록하는 것입니다. 따라서 사용자가지도 밖으로 확대하고 사각형 A 및 B의 비율을 변경할 수 있기를 원합니다.보기 A를 실현 불가능한 사각형으로 지정하면 너무 많이 제한되므로 사각형 너비와 높이 비율을 변경해야합니다.내부에서 터치를 취소 할 수 있습니까? 예 : Began 또는 touchesMoved?
크기 조정이 가능한 직사각형 기능을 사용하고있는 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)
호출이 작동하지 않는다는 것을 의미합니다. 반환 값을 호출하면 충돌이 발생하고 작동하지 않습니다. 이 문제에 대한 해결책이 있습니까?
시간 내 주셔서 감사드립니다.
이 클래스는 UIView에서만 상속받습니다. UIControl에서 상속 받도록 만들려고 할 때 "UIView 및 UIControl에서 다중 상속"오류가 발생합니다. – rgoncalv
위의 문제가 해결되었습니다. UIControl이 UIView에서 상속 받았다는 것을 깨달았습니다. 그러나 self.cancelTracking (이벤트 사용)을 호출하면 예상 한 결과가 제공되지 않습니다. self.touchesCancelled (touch, with : event)와 같이 아무 일도 일어나지 않습니다. – rgoncalv
이 코드는 iOS 10.0 ...에서 잘 작동하지만 iOS 11.0 버전에서는 작동하지 않습니다 .... 최신 코드를 제공하십시오 ..... 미리 감사드립니다. –