我试图使用UIPanGestureRecognizer移动我的对象,但我似乎无法让它顺利移动.当我向特定方向移动并向相反方向移动时,它不会立即作出反应.我假设值可能有问题,因为它在" - >"方向为正,在"< - "方向为负.
我的代码如下:
- (void)panDetected:(UIPanGestureRecognizer *)panRecognizer
{
CGPoint pointA = [panRecognizer locationInView:self.view];
CGPoint pointB = [panRecognizer translationInView:self.view];
if(panRecognizer.state == UIGestureRecognizerStateEnded ||
panRecognizer.state == UIGestureRecognizerStateChanged) {
_camera.x += pointB.x * 0.0001f;
}
}
Run Code Online (Sandbox Code Playgroud)
有没有人有更合适的方法来解决这个问题?
提前致谢.
我在将UILabel的文本设置为手势速度时,仅使用UIPanGestureRecognizer转换视图时遇到问题。
我已经成功地用这样的平移手势转换了视图(在IB的帮助下):
- (IBAction)handleGesture:(UIPanGestureRecognizer *)sender
{
CGPoint translation = [sender translationInView:self.view];
sender.view.center = CGPointMake(sender.view.center.x + translation.x, sender.view.center.y + translation.y);
[sender setTranslation:CGPointMake(0, 0) inView:self.view];
}
Run Code Online (Sandbox Code Playgroud)
但是,当我在此方法中添加以下行时,视图停止平移,但UILabel随速度更新:
self.myLabel.text = [NSString stringWithFormat:@"%@", [NSNumber numberWithInt:[sender velocityInView:self.roundShape].y]];
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
我有一个附加到UIView的UIPanGestureRecognizer.我想要做的就是拖放到一个桶里.如果用户放开UIView并且它不在存储桶中,我希望它能够动画回原始的起始位置.我为UIPanGestureRecognizer调用的选择器是:
- (void)handleDragDescriptionView:(UIPanGestureRecognizer *)gestureRecognizer {
UIView *panViewPiece = [gestureRecognizer view];
CGRect originalFrame = CGRectMake(946, 20, 58, 30);
CGPoint translation = [gestureRecognizer translationInView:panViewPiece];
if (gestureRecognizer.state == UIGestureRecognizerStateBegan || gestureRecognizer.state == UIGestureRecognizerStateChanged) {
panViewPiece.center = CGPointMake(panViewPiece.center.x + translation.x, panViewPiece.center.y + translation.y);
[gestureRecognizer setTranslation:CGPointZero inView:panViewPiece.superview];
}
else if (gestureRecognizer.state == UIGestureRecognizerStateCancelled) {
[UIView animateWithDuration:0.25 animations:^{
self.dragDescriptionView.frame = originalFrame;
}];
}
else {
[UIView animateWithDuration:0.25 animations:^{
self.dragDescriptionView.frame = originalFrame;
}];
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道如果没有originalFrame方法的顶部我能做到这一点.我原本有
CGRect originalFrame = _dragDescriptionView.frame;
Run Code Online (Sandbox Code Playgroud)
而不是硬编码,但它不会反弹.可能是因为我在拖动时正在更新该值.我并不特别喜欢硬编码值,但我不确定是否有办法解决这个问题.谢谢!
我UIGestureRecognizer用于平移,旋转,捏.但我正在申请整个观点.我需要删除子视图以外的按钮的手势.但是,当我使用泛按钮也影响.如何限制按钮从self.view移动.我使用下面的代码UIPanGestureRecognizer.
UIPanGestureRecognizer *dbpan = [[UIPanGestureRecognizer alloc] initWithTarget:self
action:@selector(ondbPan:)];
[self.view addGestureRecognizer:dbpan];
[closeButton removeGestureRecognizer:dbpan];
Run Code Online (Sandbox Code Playgroud)
泛:
- (void)ondbPan:(UIPanGestureRecognizer *)gesture
{
if ((gesture.state == UIGestureRecognizerStateChanged) ||
(gesture.state == UIGestureRecognizerStateEnded)) {
CGPoint offset = [gesture translationInView:self.view];
CGPoint center = gesture.view.center;
center.x += offset.x;
center.y += offset.y;
gesture.view.center = center;
[gesture setTranslation:CGPointZero inView:self.view];
}
}
Run Code Online (Sandbox Code Playgroud) objective-c uibutton uigesturerecognizer ios uipangesturerecognizer
我添加了一个UIPanGestureRecognizer到UIView,问题是当你在标签UIButton内的S UIPanGestureRecognizer仍处于启用状态.如何禁用UIPanGestureRecognizer按钮?
我试图在平移时不要使我的平移手势垃圾邮件功能,它只在平移完成时播放一次功能,我已经在线看了所有并且找不到这样做的方法.有人有任何解决方案?
目前的代码如下:
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget: self action:@selector(didPan:)];
self.mapView.gestureRecognizers = @[panRecognizer];
- (void) didPan:(UIPanGestureRecognizer*) gestureRecognizer
{
NSLog(@"DID PAN");
}
Run Code Online (Sandbox Code Playgroud) 我正试图检测平移手势何时结束.在Objective-C下,我会做类似以下的事情:
- (void)panGesture:(UIPanGestureRecognizer *)gesture {
if (gesture.state == UIGestureRecognizerStateEnded) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
在我的Swift项目中,它无法识别UIGestureRecognizerStateEnded......也许我只需要导入不同的东西(?)
我在touchesEnded方法中调用了一个名为addProjectile的方法.addProjectile接收touchesEnded方法接收的触摸的NSSet.为简单起见,我只在相关代码中发布了我的问题.所以,要明确一点:
-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[self addProjectile:touches]; }
-(void) addProjectile:(NSSet *)touches {//do stuff }
Run Code Online (Sandbox Code Playgroud)
我想在名为swipeRight的UIPanGestureRecognizer方法的末尾调用addProjectile并发送正确的NSSet触摸.
-(void)swipedRight:(UIPanGestureRecognizer *)recognizer {
CGPoint panned=[recognizer translationInView:self.view];
if(panned.x>50){//do stuff }
else {
NSSet *touches; <-- this is what I need to get
[self addProjectile:touches];
Run Code Online (Sandbox Code Playgroud)
所以我的问题是如何在swipedRight结束时获得正确的NSSet触摸(这是用户拿起他/她的手指):正确执行addProjectile方法.
我正在使用UIPanGestureRecognizer一个项目,我想采取起点和终点.
我试图做touchesBegin,但没有得到我需要的代码.
我怎样才能得到起点和终点UIPanGestureRecognizer?
对不起,这有多久了。寻找任何人可能拥有的指针对我来说都是一个谜。
iOS模拟器中似乎存在一个错误,即UIGestureRecognizers如何工作并传递接触点,该接触点一直持续到模拟器重新启动为止。即使杀死该应用程序并在模拟器中重新启动它也无法修复它。修复它的唯一方法(暂时)是完全退出模拟器并重新启动它。
我在UIViewController子类中有一个SKView子类。SKView子类占据UIViewController的底部,顶部包含一些按钮和其他控件。游戏涉及由UIGestureControllers管理的轻击和平移,UIGestureControllers由拥有SKScene子类的SKView子类拥有。
在任意一段时间后,手势将停止正常工作。在SKScene拥有的视图中,没有一个可以正确识别。如果我在SKView外部单击并在父UIViewController中单击,则会显示它们,但坐标全都错了。它还会导致状态错误-有时UIPanGestureRecognizer认为按下了两个手指,而不是只有一个。UIPanGestureRecognizer同样处于关闭状态。这种行为没有可识别的模式-它只是突然开始的。
这是初始化SKView及其场景的相关代码:
SKView * _gameView = [[SKView alloc] initWithFrame : gameRect];
_gameView.clipsToBounds = YES;
// _gameView.scene is an SKScene subclass
CGSize gameSize = CGSizeMake(_gameView.bounds.size.width,
_gameView.bounds.size.width);
_scene = [[GameScene alloc] initWithSize : gameSize];
// Present the scene.
[_gameView presentScene : _scene];
[self.view addSubview : _gameView];
Run Code Online (Sandbox Code Playgroud)
这是SKScene子类中注册UIGestureControllers的代码:
- (void) initializeGestureRecognition : (SKView *) view
{
UIPanGestureRecognizer * panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget : self action : @selector (handlePanGesture:)];
UITapGestureRecognizer * tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget : self action : …Run Code Online (Sandbox Code Playgroud) simulator objective-c ios uitapgesturerecognizer uipangesturerecognizer