3

ナビゲーションコントローラー内にビューがあります。

次に、このビューにサブビューを追加し、元の高さをオフセットして、画面の半分だけをカバーするようにします (残りの半分は画面の下部からはみ出します)。このビューを上にドラッグできるようにしたいのですが、ナビゲーションバーの下部に到達すると停止します。

UIPanGestureRecognizerビューのドラッグを処理するためにa を使用していますが、これは正常に機能しますが、境界で停止しているようには見えません。

これは私が使用しているコードです:

bottomNavbarY = UIApplication.sharedApplication().statusBarFrame.size.height + self.navigationController!.navigationBar.frame.size.height

view.addSubview(pullover.view)
pullover.view.frame.origin.y = pulloverOffset

var animator = UIDynamicAnimator(referenceView: view)
var collision = UICollisionBehavior(items: [pullover.view])
collision.translatesReferenceBoundsIntoBoundary = true
collision.addBoundaryWithIdentifier("upper", fromPoint: CGPointMake(0, bottomNavbarY), toPoint: CGPointMake(UIScreen.mainScreen().bounds.size.width, bottomNavbarY))
animator.addBehavior(collision)

ただし、カバービューを上にドラッグすると、境界と相互作用することはなく、まっすぐ通過します。私は何を間違っていますか?このようにユーザーがドラッグしているビューを境界を使用して停止することはできますか?

4

1 に答える 1

6

カバービューを上にドラッグすると、境界と相互作用しません

この機能を誤解しています。衝突境界は、UIKit Dynamics がビューの移動を担当する場合に使用されます。ドラッグは、ユーザーがビューの移動を担当しているときです。ドラッグを特定のポイントで停止したい場合は、ジェスチャ認識ハンドラーでビューがどこにあるかを考え、移動したくない場合はビューを移動しないようにする必要があります。

于 2015-07-09T19:35:27.507 に答える