2012-03-01 14 views
3

スクロールビューを特定の領域でのみスクロール可能にしようとしています。これを行うには、UIScrollViewをサブクラス化してtouchesBeganをオーバーライドします(this questionに似ています)。UIScrollViewサブクラスはスウィープのtouchesBeganメッセージを受け取ることはありません

ここは私の(かなりシンプルな)コードです。

.H

@interface SuppressableScrollView : UIScrollView 
@end 

.M

#import "SuppressableScrollView.h" 

@implementation SuppressableScrollView 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"touchesBegan touches=%@ event=%@", touches, event); 
    [super touchesBegan:touches withEvent:event]; 
} 

@end 

touchesBeganのみUIScrollViewのは、通常(タップなど)消費しないタッチのために呼び出されています。どのようにすべての接触を傍受するか考えていますか?

私はコンセプトがどこかにないと思います。

答えて

5

私は最近、UITableViewsのようなものを探していました。 UITableViewはUIScrollViewの拡張です。その中を掘り起こすと、UIScrollViewに4つのジェスチャー認識機能があり、スワイプなどをピックアップすることが分かりました。私はジェスチャーレコグナイザーのプロパティをダンプして、自動的に作成されているかどうかを確認することをお勧めします(私はそうだと思います)。私が考えることができる唯一のオプションは、それらを削除することですが、スクロールビューはジェスチャーに反応しません。

おそらく、それらのジェスチャー認識機能とジェスチャー認識機能の代理人を見て、より良い場所があるかどうかを確認する必要があります。

P.S.進行中のジェスチャーを認識すると、ジェスチャー認識者は自動的に嚥下イベントを開始します。

0

フレームサイズがコンテンツサイズより大きい場合、タッチが開始されたメソッドが起動しないことがあります。

タップだけで動作するので、スクロールビューのコンテンツサイズが正しく設定されていないと思われます。

関連する問題