2016-09-28 6 views
0

私は通常、tableViewの下位10%をカバーするoverlayViewを持っています。tableViewの「アクション」(スクロール、セルの選択)をタッチして選択することを無効にする方法を教えてください。

tableView and overlayView, resting state

私はoverlayViewの任意の場所をタップすると、ビューがアップスライドとのtableViewの50%をカバーしています。秒(選択)状態では

view is selected

、私はoverlayViewの外に、のtableView上の任意の場所に触れることによって、バック最初の状態に戻ることができるようにしたいです。

しかし、ビューが静止(下位10%)状態に戻るまで、tableView(および行の選択などの他のアクション)をスクロールして無効にする必要があります。

「編集」ボタンと「追加」ボタンは無視し、無効にしてください。

どうすればよいですか?

答えて

0

私の友人Sandro Pennisiは、私は最高のものであると感じTwitterに私の答えを提供できます。

基本的には、メインビューとオーバーレイビューの間に透明なUIButtonを追加します。通常は無効です。次に、overlayViewがスライドされたときにボタンを「有効にする」とタッチを聞き始めます。タッチがヒットすると、オーバーレイビューがデフォルトの位置に移動します。

image of transparent uibutton

0

すべての画面をカバーするオーバーレイを作成できますが、上部は透明です。オーバーレイを元の位置にリサイズする透明部分にタップジェスチャを追加します。

0

私はあなたの質問をよく読んで理解しています。アニメーションを制御し、オーバーレイビューの状態をチェックするためにブールを使用することができます。

ステップ:

  1. はあなたのクラスのメンバ変数としてブール値を取ると、デフォルトでfalseに設定します。

    BOOL isOverlayViewAnimating = false;テーブルビューのデリゲートメソッドで

  2. にfuncのtableView(のUITableView、didSelectRowAt:IndexPath) { (偽isOverlayViewAnimating ==)場合 { //ここにあなたのものを行う
    } }

  3. テーブルビューはuiscrollviewのサブクラスなので、そのデリゲートのメソッドも実装できるので、必要に応じてスクロールビューのデリゲートメソッドでboolをチェックしてください。アニメーションは真

    isOverlayViewAnimating =を設定し始め、最終的

  4. 。 UIView.animateWithDuration(0.2、アニメーション: { は//ここでビューの位置を設定 。}、 完了: { (値:ブール値) isOverlayViewAnimating = FALSE; })で

このようにして行動を制御することができます。

0

あなたは、単に

1. Disable user interaction on table view 
2. Start animating overlay view 
3. Check for animation end, 
4. When animation ends for overlay view, enable user interaction on table view. 
関連する問題