标签: uipangesturerecognizer

如何使用平移手势识别器旋转 SCNSphere

我创建了一个 SCNSphere,所以现在它看起来像一个行星。这正是我想要的。我的下一个目标是允许用户使用平移手势识别器旋转球体。他们可以绕 X 或 Y 轴旋转它。我只是想知道我怎样才能做到这一点。这是我到目前为止所拥有的。

origin = sceneView.frame.origin
node.geometry = SCNSphere(radius: 1)
node.geometry?.firstMaterial?.diffuse.contents = UIImage(named: "world.jpg")

let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(CategoryViewController.panGlobe(sender:)))
sceneView.addGestureRecognizer(panGestureRecognizer)

func panGlobe(sender: UIPanGestureRecognizer) {
    // What should i put inside this method to allow them to rotate the sphere/ball
}
Run Code Online (Sandbox Code Playgroud)

ios uipangesturerecognizer scenekit swift

3
推荐指数
1
解决办法
1993
查看次数

限制UIPanGestureRecognizer移动

我有一个可以使用UIPanGestureRecognizer拖动的UIView对象,但我只希望它能够向上移动3/4的屏幕.我不希望它被剪裁,但是要达到某一点而不能被拖得更远.到目前为止,它只允许它在Y轴上移动(这是所需的).

- (IBAction)panGesture:(UIPanGestureRecognizer *)recognizer
{
  CGPoint translation = [recognizer translationInView:self.view];
  recognizer.view.center = CGPointMake(recognizer.view.center.x, 
                                       recognizer.view.center.y + translation.y);
  [recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

uiview ios uipangesturerecognizer

2
推荐指数
1
解决办法
7228
查看次数

我们可以在多个视图上添加单个手势并使其工作吗?

我正在研究 Pan Gesture 的样本。我很想知道我可以在两个视图上添加单个手势吗?

我的代码如下:

UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(invokePanGesture:)];
[panGesture setMinimumNumberOfTouches:1];
[panGesture setMaximumNumberOfTouches:2];

[btnGreen addGestureRecognizer:panGesture];
[btnYellow addGestureRecognizer:panGesture];
Run Code Online (Sandbox Code Playgroud)

我的处理程序方法如下:

- (void)invokePanGesture:(UIPanGestureRecognizer*)recognizer {
CGPoint translation = [recognizer translationInView:self.view];
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, 
                                     recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是手势识别器在我的情况下只考虑最后一个视图btnYellow作为它的视图。如果我创建两个单独的 GestureRecognizer 对象,它就可以工作。所以请让我明白:

  1. 是否可以在多个视图中使用单个手势?

  2. 如果是,那么如何?

  3. 如果是现在,为什么?

提前致谢

iphone uigesturerecognizer ios uipangesturerecognizer

2
推荐指数
1
解决办法
8893
查看次数

如何确定UIPanGesture的方向(向上或向下)?

我的目标是通过向上或向下平移手势来设置iPhone的亮度.如果有一种简单的方法来确定平移方向,我无法弄明白.我添加了一个滑动手势识别器,然后是以下代码:

- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer           shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer     *)otherGestureRecognizer
{
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

但我的pan:方法似乎永远无法确定平底锅的方向.我将"self"设置为两个手势识别器的代表.接下来的代码是我最近的许多尝试.(平移时效果很好 - 屏幕缓慢或快速变暗,具体取决于向下平移的速度.)

- (IBAction)downSwipe:(UISwipeGestureRecognizer *)recognizer // 1/16/13
{
    NSLog (@"downSwipe");
    if ((recognizer.state == UIGestureRecognizerStateChanged) ||
    (recognizer.state == UIGestureRecognizerStateEnded))
  {
    NSLog (@"downSwipe in downSwipe");
    self.brightness = self.brightness -.1;
    NSLog (@"Going Down");
  }
}

- (IBAction)upSwipe:(UISwipeGestureRecognizer *)recognizer  // 1/16/13
{
    NSLog (@"upSwipe");
    if ((recognizer.state == UIGestureRecognizerStateChanged) ||
    (recognizer.state == UIGestureRecognizerStateEnded))
  {
        NSLog (@"upSwipe in upSwipe");
        self.brightness = self.brightness +.1;
        NSLog (@"Going UP");
  }
}

- (void)pan:(UIPanGestureRecognizer *)recognizer // 1/12/13
{ …
Run Code Online (Sandbox Code Playgroud)

screen-brightness uipangesturerecognizer

2
推荐指数
1
解决办法
9631
查看次数

在UICollectionViewCell中滑动UIView阻止了滚动的能力

我使用的是UIPanGestureRecognizer一个UIView是一个UICollectionViewCell.我正在使用该translationInView方法获得沿X轴的平移并UIView向左和向右滑动.它工作正常,但现在我无法在CollectionView中上下滚动,如果我的手指在单元格上.有没有办法让PanGestureRecognizer传递垂直滚动到UICollectionView

我试图复制在Reeder.app for iOS中看到的滑动.

cocoa-touch objective-c uipangesturerecognizer uicollectionview uicollectionviewcell

2
推荐指数
1
解决办法
1388
查看次数

在UITableView中检测垂直平移

我怎样才能检测垂直UIPanGestureRecognizerUITableView.我可以检测水平但只在垂直方向上UITableView滚动,我无法获得平移事件.

objective-c ios uipangesturerecognizer

2
推荐指数
1
解决办法
1108
查看次数

平移手势干扰滚动

我有三个视图控制器是UIScrollView的一部分.我希望能够在三者之间滑动,尽管其中一个视图控制器有一个UIPanGestureRecognizer.我使用这个平移手势识别器允许用户上下拖动手指来增加和减少矩形UIView的高度.因此,这个UIPanGestureRecognizer只需要知道向上/向下平移,滚动视图可以使用水平平移.

这方面的一个例子就像主屏幕; 你可以向左或向右滑动,但也可以向下滑动以获得聚光灯.我想要这种机制.

这是我的泛码:

- (void)pan:(UIPanGestureRecognizer *)aPan; // When pan guesture is recognised
{
CGPoint location = [aPan locationInView:self.view]; // Location of finger on screen
CGRect secondRect = CGRectMake(210.0, 45.0, 70.0, 325.0); // Rectangles of maximimum bar area
CGRect minuteRect = CGRectMake(125.0, 45.0, 70.0, 325.0);
CGRect hourRect = CGRectMake(41.0, 45.0, 70.0, 325.0);

if (CGRectContainsPoint(secondRect, location)) { // If finger is inside the 'second' rectangle

    CGPoint currentPoint = [aPan locationInView:self.view];

    currentPoint.y -= 80;  // Make sure animation doesn't go outside the …
Run Code Online (Sandbox Code Playgroud)

objective-c uiscrollview swipe ios uipangesturerecognizer

2
推荐指数
1
解决办法
3713
查看次数

如何检测滑动和拖动之间的手势?

我想在主视图中创建一个视图,并将滑动和拖动(平移)手势应用于该视图.但是如何知道那是刷卡还是平移手势?

uigesturerecognizer uiswipegesturerecognizer uipangesturerecognizer swift

2
推荐指数
1
解决办法
2066
查看次数

使用UIPanGestureRecognizer更新约束

我在屏幕中间有一个黑色separatorView,分隔topContainerView(橙色)和bottomContainerView(绿色).可以使用panGesture上下拖动separatorView,但我无法获得顶视图和底视图来更新其约束并调整大小.橙色视图的底部和绿色视图的顶部应始终与separatorView一起使用.

这是我的代码(UPDATED包含变量声明):

let separatorView: UIView = {
    let view = UIView()
    view.backgroundColor = UIColor.black
    view.translatesAutoresizingMaskIntoConstraints = false
    return view
}()

let topContainerView : UIView = {
    let view = UIView()
    view.backgroundColor = UIColor.orange
    view.translatesAutoresizingMaskIntoConstraints = false
    return view
}()

let bottomContainerView : UIView = {
    let view = UIView()
    view.backgroundColor = UIColor.green
    view.translatesAutoresizingMaskIntoConstraints = false
    return view
}()

override func viewDidLoad() {
        super.viewDidLoad()
        self.addViews()
        let panGesture = UIPanGestureRecognizer(target: self, action: #selector(detectPan(recognizer:)))
        panGesture.delaysTouchesBegan = false
        panGesture.delaysTouchesEnded = false
        separatorView.addGestureRecognizer(panGesture)
    }

    override …
Run Code Online (Sandbox Code Playgroud)

uigesturerecognizer ios uipangesturerecognizer swift

2
推荐指数
1
解决办法
2964
查看次数

UIScreenEdgePanGestureRecognizer

我正在尝试为我的视图控制器实现屏幕边缘平移手势。但问题是,如果尝试为两个边缘(UIRectEdge.left、UIRectEdge.right)添加边缘平移手势,

let screenEdgePanGesture = UIScreenEdgePanGestureRecognizer.init(target: self, action: #selector(self.didPanningScreen))
screenEdgePanGesture.edges = [.right, .left]
screenEdgePanGesture.delegate = self
self.view.addGestureRecognizer(screenEdgePanGesture)
Run Code Online (Sandbox Code Playgroud)

选择器方法未调用。但边缘平移手势适用于一个边缘,即,

let screenEdgePanGesture = UIScreenEdgePanGestureRecognizer.init(target: self, action: #selector(self.didPanningScreen))
screenEdgePanGesture.edges = .right
screenEdgePanGesture.delegate = self
self.view.addGestureRecognizer(screenEdgePanGesture)
Run Code Online (Sandbox Code Playgroud)

gesture ios uipangesturerecognizer swift

2
推荐指数
1
解决办法
2116
查看次数