問題タブ [uigesturerecognizer]
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.
iphone - CALayer -hitTest でクラッシュする:
この問題は本当に私を困惑させました...
UIPanGestureRecognizer を使用する iPad プロジェクトがあり、handlePanGesture 内で次のメソッド呼び出しを使用しています。
AIEnemyUnit レイヤーを「見つけ」たら、ドラッグを続行すると、すべて正常に動作します。6 番目から 10 番目の "ドラッグ" 付近を除いて、CALayer -hitTest の奥深くでデバッガーがクラッシュします。
iphone - UISwipeGestureRecognizer ジェスチャの開始点
UISwipeGestureRecognizer からジェスチャの開始点を取得することは可能ですか。それがどのように可能であるかのように
ios - UIImageViewのUIGestureRecognizer
UIImageView
サイズ変更や回転などができるようにしたいのですが、
UIGestureRecognizer
に追加できますUIImageView
か?
UIImageView
実行時に作成される回転およびピンチレコグナイザーを追加したいと思います。
これらのレコグナイザーをどのように追加しますか?
iphone - UITableViewのUIGestureRecognizer-スクロール後にクラッシュしますか?
カスタムセルを備えたUITableViewがあります。各セルの中には2つのビューがあります。各ビューには、タップイベントを処理するために接続されたUIGestureRecognizerがあります。ビューがタップされると、詳細ビューをプッシュするようにUINavigationControllerにメッセージを送信します。このシナリオは、実際にテーブルをスクロールするまでは正常に機能します。テーブルをスクロールした後、ユーザーがセル内のビューの1つをタップすると、アプリがクラッシュします。たとえば、アプリをロードし、2番目のセルのビューをクリックして、詳細ビューを画面に正しくプッシュすることができます。そこから、テーブルに戻り、下にスクロールして上に戻り、同じビューをタップします。そこから、アプリは認識されないセレクターエラーでクラッシュします。これがジェスチャーのセットアップです(viewDidLoadで):
そして、これが呼び出されるメソッドです:
最後に、コンソールで取得したスタックトレースを次に示します。
'
編集:これでしばらくテストした後、その時点で画面に表示されているビューのみがイベントを発生させると判断しました。他のすべては上記のエラーでクラッシュします。おそらくこの未回答の質問に関連していますか?
これが私のヘッダー宣言です(わかりやすくするためにiVarsとプロパティは省略されています:
iphone - 実行時にUIGestureRecognizerを使用してUIImageを作成します
UIImageViewのタッチを検出するUIGestureRecognizerがいくつかあるはずの特定のサイズの新しいUIImageViewを追加できるようにしたいと思います。
UIImageViewを1つのサブクラスにする方法、またはこれを最もよく達成する方法を教えてください。
ユーザーが実行時に必要に応じてUIImageViewを追加できるようにしたいと思います。そうすれば、gestureRecognizerによってビューを操作できるようになります。
ありがとう
cocoa-touch - 既存のタッチをキャンセルするように UIGestureRecognizer に指示するにはどうすればよいですか?
ユーザーの指の下にUIPanGestureRecognizer
あるオブジェクト ( ) を追跡するために使用しています。UIImageView
私は X 軸の動きだけに関心があり、タッチが Y 軸のオブジェクトのフレームの上または下にずれている場合は、タッチを終了したいと考えています。
タッチがオブジェクトの Y 境界内にあるかどうかを判断するために必要なものはすべて揃っていますが、タッチ イベントをキャンセルする方法がわかりません。レコグナイザーのcancelsTouchesInView
プロパティを反転しても、私が望んでいるようには見えません。
ありがとう!
uiview - UITouch に基づいて UIView を回転する
お絵描きアプリをやっています。
ユーザーが画面に図形を「ドロップ」してから、必要に応じて移動、サイズ変更、または回転できるようにしたいと考えています。
問題は回転にあります。移動とサイズ変更が正常に機能しています。
以前はかなり複雑でメモリ/プロセッサを集中的に使用するプロセスでこれを行っていましたが、現在はこれを改善しようとしています。
検索して検索しましたが、私がやろうとしていることに似た答えが見つかりませんでした。
基本的に、ユーザーが「表面」に正方形を落としたとしましょう。次に、それをタップしてハンドルを取得します。任意の場所をタッチしてパンして四角形を動かしたり (既に機能しています)、サイズ変更ハンドルをタッチ アンド ドラッグして四角形のサイズを変更したり (既に機能しています)、回転ハンドルをつかんで四角形をその中心を中心に回転させたりすることができます。
UIBezierPath を使用して正方形を描画するか、塗りつぶした UIView のサブクラスにすることを検討しました。
どちらの場合も、内部の一部のコンテンツではなく、UIView 自体を回転させようとしています。ビューを回転しようとするたびに、何も起こらないか、ビューが画面から空になるか、少しだけ回転して停止します。
これが私が試したコードの一部です(これは機能せず、これに対してさまざまなアプローチを試みました):
明らかでない場合、ここではビューを原点 (0,0) に移動し、その点を中心に回転してから元に戻すという考え方です。
ご参考までに、「角度」は正しく計算されています。また、上記のコードを[UIView beginAnimations:nil context:NULL]
/[UIView commitAnimations]
ブロックで囲みました。
UIView を「カスタム」量回転させることは可能ですか? 以前に、コントロールを回転するようにアニメーション化するところを見たり実行したりしたことがありますが、これらの例では、コントロールは常に「正方形」になりました (つまり、1 つ以上の完全な円を回転させて、最初の向きに戻りました)。
UITouches に応答してこのローテーションを「リアルタイム」で実行することは可能ですか? UIView のレイヤーのアイテムとして正方形を描画し、代わりにレイヤーを回転させる必要がありますか?
ご存知のように、私が以前に取り組んでいたのは、一連の線または で描かれた形状でしたUIBezierPaths
。データに を適用してCGAffineTransform
から、drawRect: メソッドを呼び出します。これにより、カスタム UIView 内のオブジェクトが再描画されます。この UIView は、これらのアイテムのかなりの数をホストし、それらのいずれかが必要になるたびに、それらすべてを再描画する必要があります。
そのため、ユーザーが何かを行ったときにのみ再描画するコマンドを取得する一連の UIView サブクラスを作成して、アプリのパフォーマンスを向上させようとしています。追加された形状を回転させるには 2 本の指を使用する必要があるため、iPad 用の Apple の Keynote は UIGestureRecognizers を使用してこれを実現しているようです。これは行く方法ですか?
考え?
ありがとう!
iphone - 複数の UIGestureRecognizer インスタンス間でのタッチ シーケンスの分割
テーブル ビュー間でのアイテムのドラッグをサポートする iPhone/iPad アプリを開発しています。すべてのテーブルが画面に収まらないため、UIScrollView
それらを水平にレイアウトし、ページングをサポートするカスタムを作成しました。
主要なドラッグ アンド ドロップをまとめましたが、乗り越えられない問題がいくつか残っています。
ユーザーがドラッグするアイテムを選択した後、ドラッグしている間、スクロールして
UIScrollView
移動先を見つけることができませんUITableView
。ユーザーが同じテーブル ビュー内でアイテムをドラッグしたい場合があります。ただし、ドラッグが開始されると、テーブル ビューはスクロール ジェスチャを認識しなくなります。
UIGestureRecognizerDelegate
を実装したり、複数のジェスチャ認識エンジンがジェスチャを同時に認識できるようにするなど、さまざまなオプションを試しました。
この問題は、イベント処理ガイドの次の説明に端を発しているように見えます。画面から最後の指が離されました。」
UIGestureRecognizer
インスタンスは常にシーケンス全体と一致します。私の場合、単一のシーケンスを個別のジェスチャに分割したいと考えています。一部のタッチはアイテムのドラッグを認識しますが、同じシーケンス内の別のタッチはスワイプまたはスクロール ジェスチャとして認識される必要があります。事実上、ジェスチャ認識エンジンに同時に認識させたいのですが、異なるタッチのみを認識させたいのです。ジェスチャの一部としてタッチを認識すると、そのタッチは他の人から無視されます。
デフォルトのサブクラスを使用してこれらすべての問題を首尾一貫して解決する方法を見つけられずUIGestureRecognizer
、独自のカスタムのマルチパート ジェスチャ認識エンジンを作成しようとしています。
私はむしろそうする必要はありません - 同じ結果を達成するためのより適切な方法はありますか?
iphone - UIGestures の後に UIView のフレームを維持する
UIGestureRecognizers を使用して、ユーザーが画面上でオブジェクト (UIView のサブクラス) をパン、スケーリング、回転できるようにする iPad アプリに取り組んでいます。
[UIView frame] プロパティは変換後に無効になることを理解しているため、UIGestureRecognizers の値を取得して、「フレーム」を自分で保持しようとしています。
これを試みるために私が使用しているコードは次のとおりです (Apple のサンプル プロジェクト、SimpleGestureRecognizers の多くのコードに気付くかもしれません)。
回転の奇妙な点に気付いたので、正確な回転値を維持するために次のメソッドを実装しました。
とにかく、画面上の形状はうまくパン、スケーリング、回転します。すべてが期待どおりで、パフォーマンスは良好です。
問題は、ユーザーが UIView を移動、サイズ変更、回転した後、ユーザーにタップさせて、ピンチによる「正方形」のサイズ変更以外のサイズ変更を可能にする「ハンドル」を提供したいことです (つまり、ピンチ ジェスチャでは、x と y の両方で同じ比率で拡大または縮小します)。さて、上記のコードを使用しても、保存される値はまったく正確ではありません。
私が使用している「ハンドル」は、UIView のフレーム/長方形の各コーナーと各「辺」の中間にある 10x10 ドットです。最初に四角形を配置し、他の操作を行う前にタップしてハンドルを取得すると、適切な場所にハンドルが表示されます。オブジェクトを移動、サイズ変更、回転してからタップすると、ハンドルがすべてシェイプから少しずれます。一般的には約20ピクセルのようです。
UIGestureRecognizer オブジェクトの値は十分に正確ではありませんか? これらの値は画面上のオブジェクトを変更するために使用され、それは正確であるため、そうではないようです。
UIView のフレームをいじった後に実際の表現を取得する方法はないと確信していますが、悪い値を与えているカスタム コードの欠陥はどこにあるのでしょうか? 度とラジアンを変換するときに精度が失われますか?
関連するメモ: Apple には、翻訳/変換されたビューを描画する方法を追跡する内部コードがあることは明らかです。現在使用している単色のボックスは、正しく移動、ズーム、回転されています。それで、翻訳/変換されたUIViewを表示するために使用する値にアクセスする方法はありますか?
ありがとう!
iphone - UIGestureRecognizerを使用して、UIImageViewをx軸に沿って移動します
4つのUIImageViewが一列に並んでいて、画像を左から右に移動できるようにしたいと考えています。動きを(画像の中心に沿って)x軸に制限する方法はありますか?つまり、左右にのみ移動しますか?iPhoneの画面上でアイコンを移動するのと似ています。
各ビューにUIPanGestureRecognizerを追加して、画面上のあらゆる場所にビューを移動できるようにしました。
何かご意見は?