1
パンジェスチャ認識器でUIWindow
を移動することはできますか?ジェスチャーがどのように機能しているかを理解していて、ウィンドウではなくビューで機能するようになってきました。UIウインドウの移動にパンジェスチャーを使用できますか?
パンジェスチャ認識器でUIWindow
を移動することはできますか?ジェスチャーがどのように機能しているかを理解していて、ウィンドウではなくビューで機能するようになってきました。UIウインドウの移動にパンジェスチャーを使用できますか?
はい、できます。
UIWindow
のサブクラスはUIView
であり、通常はPanGesture
を追加できます。ウィンドウを移動するには、UIApplication.sharedApplication.delegate.window
のフレームを変更しても問題ありません。
新しいプロジェクトを作成し、AppDelegate.m
ファイルを次のコードに置き換えてください。ウィンドウを移動することができます。
#import "AppDelegate.h"
@interface AppDelegate()
@property (nonatomic, strong) UIPanGestureRecognizer* panGesture;
@property (nonatomic, assign) CGPoint lastPoint;
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)];
[self.window addGestureRecognizer:_panGesture];
_needUpdate = YES;
return YES;
}
- (void)handlePanGesture:(UIPanGestureRecognizer *)panGesture {
CGPoint point = [panGesture locationInView:self.window];
CGPoint center = self.window.center;
if (CGPointEqualToPoint(_lastPoint, CGPointZero)) {
_lastPoint = point;
}
center.x += point.x - _lastPoint.x;
center.y += point.y - _lastPoint.y;
self.window.frame = [UIScreen mainScreen].bounds;
self.window.center = center;
if (panGesture.state == UIGestureRecognizerStateEnded) {
_lastPoint = CGPointZero;
}
}
@end
お返事ありがとうございます。これは部分的に機能しています。しかし、それは開始点と新しい点の間を飛び跳ねています。アンディのアイデアなぜ?それはそれが両方に設定するtryiのようなものです –
@KaneBuckthorpe私は答えを更新しました。再度確認することができます。それが動作すれば教えてください;) – trungduc
完璧に動作します!ありがとうございました!これは、年齢のために私を悩ませていたhahaa –