11

私はUIImageViewビューコントローラーを持っています。画像ビューの特定の領域をタップ可能にすることは可能ですか?

例:地図の画像があります。POI のみをタップ可能にします。全体像ではありません。これは可能ですか?

4

4 に答える 4

18

handleGestureメソッドを使用できます。最初に、タッチを受け取る場所を作成する必要があり、以下のようにデリゲート メソッドでタッチの場所と比較する必要があります。

CGRect locationRect;

表示中

locationRect = CGRectMake(CREATE A FRAME HERE);

次にデリゲートメソッド

- (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer {
    CGPoint p = [gestureRecognizer locationInView:self.view];
    if (CGRectContainsPoint(locationRect, p)) {
        NSLog(@"it's inside");
    } else {
        NSLog(@"it's outside");
    }
}
于 2013-06-26T04:24:04.343 に答える
3

manujmv のおかげで、 Custom Gesture AreaのSwift 3実装を理解することができました。私の場合、ある VC から別の VC に移動するために、ウィンドウの両側に 50 個のポイント ストリップを作成しています。ただし、これを他のアプリケーションに再利用するのは非常に簡単です。

class ViewController: UIViewController {
   ...
   var mySensitiveArea: CGRect?
   ...
   override func viewDidLoad() {
   ...
   let screenWidth = UIScreen.main.bounds.size.width
   let screenHeight = UIScreen.main.bounds.size.height
   mySensitiveArea = CGRect(0, 0, 50, screenHeight)
   let swipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(self.handleGesture(_:)))
   swipeGesture.direction = UISwipeGestureRecognizerDirection.right
   self.view.addGestureRecognizer(swipeGesture)
   }
}

//Function for determining when swipe gesture is in/outside of touchable area
func handleGesture(_ gestureRecognizer: UIGestureRecognizer) {
    let p = gestureRecognizer.location(in: self.view)
    if mySensitiveArea!.contains(p) {
        print("it's inside")
        showMainViewController()
    }
    else {
        print("it's outside")
    }
}

//Segue to Main VC
func showMainViewController() {
    self.performSegue(withIdentifier: "toMain", sender: self)
}
于 2016-12-05T04:48:02.210 に答える
2

はい、可能ですが、それだけの価値があるかどうかを自問する必要があります。私だったら、マップ上に POI オブジェクトを追加し、代わりにジェスチャ レコグナイザーをアタッチします。ただし、他のルートに行きたい場合は、次の方法を調べることができますUIGestureRecognizerDelegate

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

これは、ジェスチャが特定のタッチを処理する必要があるかどうかを示します。POI に基づいてフィルタリングできます。

于 2013-06-26T04:16:37.663 に答える