私のUIViewControllerのメインビューでは、mapViewと、mapViewの上にあるビュー(別のビューAを考えてみましょう)があります。どちらもself.view.boundsと等しいフレームを持ちます。ビューAは、イメージを切り抜くのに使用されるのと同様のサイズ変更可能な矩形です。ここでの目標は、ユーザーがマップ上のエリアを指定できるようにすることです。だから、私は、ビューAを実現不可能な広場にすることはそれをあまりにも制限しすぎるので、ユーザーが地図の外を拡大して矩形の幅と高さの比率を変更できるようにしたい。内側からタッチをキャンセルすることはできますか?touchesBeganまたはtouchesMoved?
私はこのプロジェクトをGitHub https://github.com/justwudi/WDImagePickerから入手しました。これは、サイズ変更可能な矩形機能を使用しています。 Githubのリンクの2番目の画像には、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(イベント付き)を呼び出すと、予期した結果が得られません。 – rgoncalv
このコードはiOS 10.0のバージョンでは正常に動作していますが、iOS 11.0のバージョンでは動作しません....最新のコードを提供してください.....前もって感謝します –