問題タブ [completion-block]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
10696 参照

iphone - uiviewおよびアニメーション完了ブロックとのユーザーインタラクション

私は次のコードを持っています:

さらに私は持っています:

そして、imageViewをタップするユーザーを処理するタップジェスチャレコグナイザーセット。最初のアニメーションが発生している間、ジェスチャレコグナイザーは予想どおりに起動します。しかし、完了ブロックから連鎖アニメーション中にimageViewをタップしようとすると、適切なオプションを設定しても何も起こりません。

誰か考えがありますか?グーグルで答えが見つかりません。

0 投票する
3 に答える
1558 参照

ios - 同じオブジェクトに2つのアニメーションがあり、最後に表示されるだけです。ネスト完了ブロックなしで最初の1つを表示するにはどうすればよいですか?

ブロックを使用して、同じUIImageViewで2つのアニメーションを実行しています。アニメーションは完全に連続しているわけではありませんが、ほとんどです。間にいくつかのロジックがあります。

  • ビューのある場所から別の場所にUIImageViewをアニメーション化します。
  • 画像をそこにとどまらせるかどうかを決定するロジックを実行する
  • 許可されていない場合は、アニメーションを元に戻します(UIImageViewは元の場所に戻ります)

上記のようにこれを実装すると、2番目のアニメーションのみが表示されます(これは私が理解していることからの正常な動作です)。最初のアニメーションの完了ブロック内にロジックと2番目のアニメーションブロックをネストすると、両方のアニメーションが表示されますが、その完了ブロックにかなりの量のコードが詰まっていて、見苦しくて場違いに見えます。

ネストされていない構成で、iOSが前のアニメーションを短くして最後のアニメーションのみを実行したいのはなぜですか?また、次のアニメーションに進む前に最初のアニメーションを待機させるにはどうすればよいですか?メインスレッドをブロックしたり、完了ブロックで「座ってスピン」したりする必要はないと思います。すべてのアニメーションを表示したいだけです。2番目のアニメーションに遅延を追加しようとしましたが無駄になりました。

これはCAKeyframeAnimationの仕事ですか?

0 投票する
4 に答える
24682 参照

ios - BOOL/完了ブロックを使用して自動反転/無限リピートUIViewアニメーションを停止します

プログラムの他の場所にBOOLを設定して、その無限ループの繰り返しをキャンセルすることを目的として、次のUIView animateWithDuration:メソッドを設定しています。アニメーションのサイクルが終了するたびanimationOnにブロックが呼び出されるという印象を受けましたが、そうではないようです。completion

ブロックがcompletion繰り返しアニメーションで呼び出されたことはありますか?そうでない場合は、このメソッドの外部からこのアニメーションを停止する別の方法はありますか?

0 投票する
2 に答える
634 参照

ios - アニメーション完了ブロックの実行が早すぎる

フライト コントロールのコントロールと同様に、ユーザーが定義しているパスに沿って飛行機を動かそうとしています。非効率的ではありますが、パスを描くことはできますが、パスに沿って平面をスムーズにアニメーション化することはできません。

最初は、位置を変更することによって提供される暗黙的なアニメーションを使用して、平面をパスに沿って動かそうとしましたが、アニメーションの速度を変更できないため、平面の動作が悪くなります。

現在、アニメーション ブロックを再帰的に使用しようとしていますが、完了ブロックが呼び出されるのが早すぎて、パスが描画された直後の平面になってしまいます。

これはセットアップコードです:

この実装は機能しますが、うまくいきません。飛行機はパスをたどりますが、途切れ途切れです。

これが私がブロックでやろうとしていることです。全体をたどるのではなく、描画されたパスの最後までスキップするだけです。

どこが間違っているのかわかりません。私はobjective-cとブロックが初めてです。アニメーションが始まった直後に完了ブロックが実行されることになっていますか? 私には意味がありませんが、私が見つけることができる唯一の説明です。


編集: ブロック アニメーションを引き続き使用できるように、最終的に平面を UIView にしました。CALayer トランザクションは、私の再帰をあまり好きではありませんでした。

0 投票する
1 に答える
234 参照

ios - 完了ブロック

私のviewControllerで、xmlパーサーを開始するクラスQuestionParserのインスタンスを作成します。私の質問は次のとおりです。プログラムがcompblockに到達する前にパーサーが解析を終了せず、nil引数またはエラーを返す可能性はありますか?

MenuViewController.m

QuestionParser.m

(無効) parseCategories:(myCategoryCompletion) compblock {

[自己parseCategories];

}

申し訳ありませんが、すべての情報を提供できませんでした。状況を明確にするよう努めます。関数でparseCategories私はこれを行います:

-(無効) parseCategories {

didFinishDocumentそして、パーサーのデリゲート「 」が到達する前に完了ブロックが終了しないことを期待しています。これは当てはまりますか?

さて、この関数をテストしている間、すべてが正常に動作し、パーサー デリゲートが xml から必要な配列を作成し、その後、ブロック compblock(categoryName,categoryID) の最後に到達し、必要なものをビュー コントローラーに返します。パーサーに時間がかかる場合、私はさまよっていますが、それでも機能しますか?

0 投票する
1 に答える
3701 参照

closures - SwiftでcompletionBlockを使用するにはどうすればよいですか?

Swift の SKStoreProductViewController を利用しようとしていますが、構文、特に完了ブロックでエラーが発生しています。

これが私のコードです:

これを実行した後expected "," separatorerror:NSError!),-> Void

アップルのドキュメントが要求するので、これは私には意味がありません:

私は何を間違っていますか?