相关疑难解决方法(0)

如何使用UIPanGestureRecognizer移动对象?iPhone/iPad版

这个UIPanGestureRecognizer课程有几个例子.例如,我已阅读此内容,但仍无法使用它...

在我正在处理的nib文件上,我有一个UIView(图像上的白色矩形),我希望用该类拖动:

在此输入图像描述

在我的.m文件中,我放置了:

- (void)setTranslation:(CGPoint)translation inView:(UIView *)view
{
    NSLog(@"Test to see if this method gets executed");
}
Run Code Online (Sandbox Code Playgroud)

当我将鼠标拖过时,该方法无法执行UIView.我也试过放置:

- (void)pan:(UIPanGestureRecognizer *)gesture
{
    NSLog(@"testing");
}
Run Code Online (Sandbox Code Playgroud)

并且该方法也不会被执行.也许我错了,但我认为这个方法应该像- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event我必须放置该方法的方法一样工作,只要有触摸就会调用它.

我究竟做错了什么?也许我必须绘制与该方法的连接?如果是这样我怎么能这样做?

iphone objective-c drag ipad

78
推荐指数
3
解决办法
12万
查看次数

使用平移关闭 UINavigationController 调整 UINavigationBar 相对于顶部安全区域的大小

我正在使用平移手势识别器来关闭 UINavigationController。我正在使用此处的代码,并进行了修改以适合我的 NavigationController,我还将手势识别器添加到容器视图内的实际 VC。

一切正常,除了当我向下滑动时,导航栏会在 y 值 > 0.0 时更改其位置。

我认为正在发生的是导航栏附加到顶部安全区域,当它离开顶部安全区域时,它会自动将自身调整到视图的顶部。

我怎么能简单地实现它,以便导航栏的大小要么延伸到顶部的安全区域下方,要么完全忽略它,而是限制它所在的视图?

以下是图片:

普通的: 普通的

向下滑动以关闭: 刷下

这是我用于 UINavigationController 的代码

//
//  PannableViewController.swift
//

import UIKit

class PannableViewController: UINavigationController {
    public var minimumVelocityToHide = 1500 as CGFloat
    public var minimumScreenRatioToHide = 0.5 as CGFloat
    public var animationDuration = 0.2 as TimeInterval

    override func viewDidLoad() {
        super.viewDidLoad()

        // Listen for pan gesture
        let panGesture = UIPanGestureRecognizer(target: self, action: #selector(onPan(_:)))

        if let lastVC = self.childViewControllers.last {
            lastVC.view.addGestureRecognizer(panGesture)
        }

    }

    func slideViewVerticallyTo(_ y: …
Run Code Online (Sandbox Code Playgroud)

uinavigationbar uinavigationcontroller ios uipangesturerecognizer swift

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