どのようにテーブルビューOC ScrollViewドラッグに応じて、ドラッグジェスチャが含まれています

忙しい魚のメインページを参照して、上部のビューと下のポイントにtableView:

まず、UI制御設計を取得します:

@property(弱い、非アトミック)IBOutlet UIScrollViewの * ContentScrollView; // ScrollView外適用
@Property(弱い、非アトミック)IBOutletのUITableView * DocterInfoTable; //これは内部テーブルビューScrollViewある
@Property(弱い、非アトミック)IBOutlet UIStackView * DoctorTableStack。 //これは、あなたがScrollView滞在したいポイントです

 

私たちは、.Mファイルに合意UIGestureRecognizerDelegateを達成するために、複数のジェスチャーに対応するための新しいコントローラをContentScrollViewする必要があります。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
{ 
    リターンYES。
}

 次にその<、UITableViewDelegate、UITableViewDataSource、UIScrollViewDelegate>メインインタフェースプロトコルを実現します:

- (ボイド)scrollViewDidScroll:(UIScrollViewの* )scrollView {
 // のNSLog(@ "%の@%のF"、scrollView.class、CGRectGetMinY(_DoctorTableStack.frame) - _ContentScrollView.contentOffset.y)。
    // のNSLog(@ "%@の"、NSStringFromCGRect(_DoctorTableStack.frame)); 

    もし(CGRectGetMinY(_DoctorTableStack.frame)<= _ContentScrollView.contentOffset.y){ 
        のNSLog(@ " 禁止_ContentScrollView滑动" )。
        _ContentScrollView.contentOffset = CGPointMake(0 、CGRectGetMinY(_DoctorTableStack.frame))。
        
        もし(_DocterInfoTable.contentOffset.y> 20 ){ 
            doctorViewPull= ; 
        } 
        
            doctorViewPull = ; 
    } 
    
    であれば(CGRectGetMinY(_DoctorTableStack.frame)> _ContentScrollView.contentOffset.y){ 
        のNSLog(@ " 不行_DocterInfoTable滑动" )。
        もし(!doctorViewPull){ 
            _DocterInfoTable.contentOffset = CGPointZero。
        } 
        
            _ContentScrollView.contentOffset = CGPointMake(0 、CGRectGetMinY(_DoctorTableStack.frame))。
        
        

    } 
    
}

 50より大きいまずcontentoffset値は瞬間的である可能性が高いです。だから、判定境界値問題のエラーが発生する可能性がありcontentoffsetに依存しています!

1._ContentScrollView.contentOffset.yは彼が私達の位置の上部よりも小さく設定すると、オフセットたちのScollViewを表し、私たちはテーブルビューは、つまり、そのCGPointZeroにオフセットオフセットは許可されていません。このビジョンにScrollViewは、子どもたちのテーブルビューを動かすには動いていません。
2.場合は
、設定値よりも_ContentScrollView.contentOffset.y一度時間が大きく、そのスライドを禁止するには、彼の常に設定値にとどまるの値を設定します。おそらく第二分岐、そこに入力されますので、しかし、我々は突然引き上げ時にScrollViewとテーブルビューは、contentoffsetを持つことになりますと、「スライド_DocterInfoTablehuませんが。」だから我々は、パンに私の状態テーブルビューを表現するフラグを必要とする、あなたはこのブランチに入るが、それでも我々は値を設定し、あなたの現在の場所を大切になるにもかかわらず、応答しないScrollview。contentoffsetが十分に小さくなるまでテーブルビューは、ここで私は、私は国家を代表してパンを応答するために始めた、リファレンスとして20を設定します。(完璧に近いものにも設定することができる)

、IはScrollViewの特定の値をスライドするときの状態フラグを必要ScrollViewは変更しないで、テーブルビュー応答パンジェスチャ:焦点です。テーブルビューはパンジェスチャーに対応するための私の時間をあきらめ値はスライドの上に、つまり、0.1よりも少なくとも大きい私のtableViewをcontentoffsetです。これは、両方のスイッチボタンで

 

おすすめ

転載: www.cnblogs.com/JMarshall/p/11129637.html