2013-06-03 10 views
6

背景はその場でポップオーバーの座標を変更する方法

私はImageViewのからのポップオーバーを表示する必要が

(barbuttonないRECT)検索field.Theのポップオーバーを持っているから、提示する必要がありますUIModalPresentationFormSheet.Thisが正常に

問題達成される:

をキーボードがアップし、それポップオーバーのための私のフレームでモーダルフォームシートのシフトを示しているときに私は(ランドスケープモード)に面してる問題があります。したがって、ポップオーバーは私のままですn元の位置(キーボードが表示される前)になり、表示されている矩形が上に移動します。 私が適用した解決策は(using presentPopoverFromRect)のポップオーバーを-(void)didShowKeyBoard:(NSNotification*) notifに変更してから変更します。これは-(void)didhideKeyBoard:(NSNotification*) notifと同じです。これはうまく動作しますが、トランジションは非常に高速で弾力的です。 これでどのようにスムーズに移行できますか?

は私が

を試してみましたが、私が試した:

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationCurve:UIViewAnimationCurveLinear]; 
[UIView setAnimationDuration:5.0f]; 
[_statePopover presentPopoverFromRect:stateHandler.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:NO]; 
[UIView commitAnimations]; 

が、それはうまくいきませんでした。

誰かが正しい方法を教えてもらえますか?
ご協力いただきまして誠にありがとうございます。

+0

方向に応じてポップオーバーの座標を変更しようとしましたか? – Radu

+0

@ Radu肖像画で私は上記の問題に直面していません。風景では、私は私の質問に述べたように、私はすでに位置を変更されているrectからそれを再提示します。ポップオーバーは、シフトされたrectの新しい位置を正しく仮定します。私が直面している問題は、その遷移にあります。滑らかではありません。 –

+0

私は他の場所でこの種の問題を抱えていましたUIViewアニメーションにすべてのトランジションコードを入れてみてください - 私はこのトリックをいくつかのキーボードに使用しました。おそらくそれはあなたのために働くかもしれません – Radu

答えて

1

これは私の問題を部分的に解決しました。私は、下記のようポップオーバーpresentation.Itが行く遅らせるために派遣を使用:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_USEC), dispatch_get_current_queue(), ^{ 
    [_statePopover presentPopoverFromRect:statehandler.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 
}); 

必要に応じて私のキーボードが却下されたときにこれは動作しますが、同じスニペットは、キーボードが表示されたときに望ましい結果を提供するために失敗しました。

このように動作している理由が分かっている場合は、ご意見をお寄せください。ありがとうございます!

関連する問題