8

ジェスチャーやタッチの転送に問題があります。私はそれをかなりいじりましたが、思い通りに動作させることはできません。

基本的に、2本の指でデュアルスクリーンでスクロールビューを制御し、他のすべてをオーバーレイスクロールビューの背後にあるiPadビューに転送したいと考えています。

デュアルスクリーンでスクロールビューを制御できるようにするために、サブクラス化UIScrollViewし、ipad スクリーンにクリアな背景を持つオーバーレイ ビューとして追加しました。

次に、デリゲートに接続して、ドラッグなどをデュアルスクリーンのスクロールビューに転送しました。これは完全に機能します。

私が書いたように、スクロールビューを2本指のスクロールだけに反応させたいので、

ScrollView.panGestureRecognizer.minimumNumberOfTouches = 2;

しかし、スクロールビューはすべてのタッチを使い果たし、後ろのビューに2本の指でタッチする以外のすべてを転送するのは正しくありません。をオーバーライドすると思います

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event

トリックを行う必要がありますが、画面上の指の数を正しく検出することが正しくありません。

4

4 に答える 4

2

-pointInside:withEvent:残念ながら、システムはジェスチャ認識機能の要件を満たしているかどうかを判断する前に、タッチがどのビューにあるか (またはタッチがどのビューにあるか) を判断するため、ここでは何もできません。

ここでの最善の策は、現在スクロールビューの背後にあるビューを実際にスクロールビューのコンテンツビューにし、スクロールビューのコンテンツオフセットが変更されるたびにそのビューを移動して、同じ位置に保つことだと思います画面。(これは高価に聞こえますが、実際にはそうではありません。) したがって、スクロール ビューはオーバーレイではなく、アンダーレイに似ています。

、 などで遊んでUIScrollView.delaysContentTouches-[UIScrollView touchesShouldBegin:withEvent:inContentView:]動作を改良することもできます。

于 2013-11-01T12:04:31.057 に答える
1

Xcode 6.4、Swift 1.2 の更新:

私もサブクラス化しましたUIScrollView

import UIKit

class WBMScrollView: UIScrollView
{
    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent)
    {
        self.nextResponder()?.touchesBegan(touches, withEvent: event)
        super.touchesBegan(touches, withEvent: event)
    }
}

アプリのメイン VCで、次の場所ViewController.swiftでテストしました。

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
        println(" touches began")
    }

そしてそれはうまくいきました。スクロールビューはIB経由で追加され、接続されていますViewController.swift

于 2015-07-09T09:01:26.490 に答える