私の問題はこれです。ユーザーはグリッド上の特定の画像を保持できます。ユーザーが画像を2秒間保持すると、その上に別のビューがポップアップ表示されます。ユーザーの指がまだ画面上にあるため、プログラムが機能する必要があります。新しく作成されたビューは指と一緒に移動します。現在は機能しているため、ビューを一緒に移動するには、ユーザーは指を離して画面に戻す必要があります。アイデアはありますか?
2 に答える
最初のプレスを検出するために使用する場合はUILongPressGestureRecognizer
、ユーザーが指を離すまでジェスチャ アクション メソッドを呼び出し続けるため、それを使用して動きを追跡することもできます。
おそらくそれを行うことができるさまざまな方法があります。頭に浮かぶのは、View Controller自体を介してタッチイベントを管理することです。-canBecomeFirstResponder
これには、もちろんメソッドを実装する必要がありますtouches[Began|Moved|Ended|Cancelled]:withEvent:
。
別の方法として、 を使用しUIImageView
て個々の画像を管理および表示している場合は、それをサブクラス化し、それを介してタッチ イベントを処理できます。この場合、UIView
ドラッグを追跡するために実際に新しい を作成するのではなくNSAffineTransform
、「ポップアウト」の外観を与えるために使用し、同じビュー オブジェクトで位置を追跡し続けることができます。タッチが終了したら、識別変換を適用して通常のサイズに戻します。変換はアニメート可能です。
編集
ビュー コントローラーの実装では、上記のタッチ メソッドを実装する以外に、コントローラーで実際にタッチ イベントを受け取るために次の操作を行います。
@implementation MyViewController
...
- (BOOL)canBecomeFirstResponder
{
return YES; // Default for UIResponder is NO
}
...
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
...
[self becomeFirstResponder]; // ensures view controller receives touch events
}
...
@end