我创建了一个 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) 我有一个可以使用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)
谢谢你的帮助.
我正在研究 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 对象,它就可以工作。所以请让我明白:
是否可以在多个视图中使用单个手势?
如果是,那么如何?
如果是现在,为什么?
提前致谢
我的目标是通过向上或向下平移手势来设置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) 我使用的是UIPanGestureRecognizer一个UIView是一个UICollectionViewCell.我正在使用该translationInView方法获得沿X轴的平移并UIView向左和向右滑动.它工作正常,但现在我无法在CollectionView中上下滚动,如果我的手指在单元格上.有没有办法让PanGestureRecognizer传递垂直滚动到UICollectionView?
我试图复制在Reeder.app for iOS中看到的滑动.
cocoa-touch objective-c uipangesturerecognizer uicollectionview uicollectionviewcell
我怎样才能检测垂直UIPanGestureRecognizer上UITableView.我可以检测水平但只在垂直方向上UITableView滚动,我无法获得平移事件.
我有三个视图控制器是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) 我想在主视图中创建一个视图,并将滑动和拖动(平移)手势应用于该视图.但是如何知道那是刷卡还是平移手势?
uigesturerecognizer uiswipegesturerecognizer uipangesturerecognizer swift
我在屏幕中间有一个黑色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)我正在尝试为我的视图控制器实现屏幕边缘平移手势。但问题是,如果尝试为两个边缘(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) ios ×7
swift ×4
objective-c ×3
cocoa-touch ×1
gesture ×1
iphone ×1
scenekit ×1
swipe ×1
uiscrollview ×1
uiview ×1