问题标签 [uipinchgesturerecognizer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
397 浏览

ios - 冲突的 UIPanGestureRecognizer(3 个手指)和 UIPinchGestureRecognizer

我将 UIPanGestureRecognizer 和 UIPinchGestureRecognizer 添加到同一个视图中。这通常不会导致任何问题,但我的 UIPanGestureRecognizer 需要 3 个手指会导致问题:

有时,应该在平移时调用捏合手势。它的工作时间约为 50%,但是在同一个视图上实现这两个手势的更好方法是什么,所以准确性更好?

编辑:我只希望一次发生一个手势。

0 投票
1 回答
527 浏览

ios - GLKView 放大导航栏

我的 iOS 应用程序窗口顶部的导航栏和底部的工具栏之间有一个 GLKView (OpenGL ES2.0)。我已经使用 UIPinchGestureRecognizer 实现了捏缩放,但是当我缩小很大程度时,我的视图会在顶部导航栏上运行。令人惊讶的是,视图并没有越过底部的工具栏。想知道我做错了什么。

这是我正在使用的视口设置:

这是更新和捏处理程序:

0 投票
2 回答
364 浏览

ios - UILable numberoflines 和 font size 在缩小期间自动设置

我的要求如下。

我在UILable里面加了一个UIView width & height is 30。我已经设置UIPinchGestureRecognizer好了UIView。捏合功能在 UIView 上运行良好。

但是当我放大UILable字体大小并numberOfLine自动设置时,我想要那个UIView

所以最初UILable在视图中不可见。当我放大那个时间时UILable,将显示这些区域,text以便UILable可见(例如,这次是 3 行)。如果我增加缩放级别,则文本将显示在一行中。

如何存档此功能?

请参阅下面的屏幕截图我想要做什么

在此处输入图像描述 ******** 图片 1 *****************

在此处输入图像描述 ******** 图 2 *****************

在此处输入图像描述 ********** 图 3 *****************

提前致谢 ..

0 投票
1 回答
9149 浏览

ios - 下一次触摸前接收系统手势状态通知失败

我有一个控件,可以在一个视图中交替切换两个视图。即,在容器视图中通过子视图方法添加两个视图控制器。捏合手势会放大当前视图,并显示第二个视图。如果希望转到上一个视图,则可以通过捏住手势来完成。问题是,视图不会对 gusture 做出反应,有时并不总是和消息

“下一次触摸前接收系统手势状态通知失败”

在日志中打印出来。任何建议为什么此消息即将到来并且视图无法识别该手势?

0 投票
1 回答
121 浏览

ios - 在 uiscrollview 上使用自定义 uigesture 捏三指

我有一个允许捏合、平移和单击/双击功能的 uiscroll。我想添加一个三指捏入/捏出来触发我的应用程序中的其他内容。捏进去做这个,捏出来做那个。

默认情况下,内置滚动捏合允许 2 个手指。我将如何添加第三个?子类?我是否必须删除滚动视图上已有的手势?

0 投票
2 回答
599 浏览

ios - 旋转 180 后 UIImageView 反向移动的旋转移动缩放*

这是我用于移动、缩放和旋转 UI 的代码ImageView都可以正常工作,但问题是当我们旋转ImageView它时它会旋转,但之后它会反向移动,就像我向右拖动但ImageView向左移动后我们无法获得当前中心点旋转,这样当我们拖动中心点时,旋转的ImageView不是原始的

这是继承的自定义类UIImageView

0 投票
1 回答
687 浏览

ios - 核心图:捏以更改 x 轴范围

所以我有一个简单的 XY 线图,Y 轴为整数值,X 轴为日期。我想要做的是水平两指捏合并动态调整范围。例如,捏合会给您更大的范围(心智模型是您将显示的开始日期和结束日期设置得更远)然后捏合会给您更小的时间窗口。

是否已经为此内置了一些东西?CorePlot 相当新,默认的手指东西只是缩放图形本身,没有任何值。

我需要在上面放一个手势识别器吗?还是 coreplot 为此内置了一些东西?

干杯

0 投票
1 回答
16188 浏览

ios - 将捏缩放添加到 UICollectionView

介绍

我将描述我想要达到的效果,然后我将详细说明我目前如何尝试实现它以及它的行为有什么问题。我还会提到另一种我看过但根本无法工作的方法。

最相关的代码位于问题底部,以便快速访问。您可以在 BitBucket下载源代码的 zip文件或将项目作为Mercurial 存储库获取。该项目现在包含以下答案中的修复。如果您想要最初提供的损坏版本,则将其标记为“initial-buggy-version”

该项目是一个极简的概念证明/尖峰,用于评估效果是否可行,所以它相当轻巧!

所需效果

该应用程序将显示大量离散的信息行,形成一个垂直表格。该表格将由用户垂直滚动。这是 a 的标准行为UITableView,您也可以使用 a UICollectionView。但是,应用程序还必须支持捏缩放。当你在桌子上捏缩放时,所有的线都应该挤在一起。当你伸展时,所有的线都应该分开。

在我的概念证明中,单个单元格没有调整大小,它们只是重新定位得更近或更远。这是故意的:我认为验证这个想法的可行性并不重要。

这是屏幕截图,显示了当前 App 的缩小和放大效果:

放大图像 缩小的图像

当前实施

我正在使用UICollectionView带有自定义UICollectionViewLayout子类的 a 。布局UICollectionViewCells在屏幕中间以一个漂亮的摆动正弦波定位。每个UICollectionViewCell都只是一个容纳UILabel行的容器indexPath

子类有一个参数来设置它所描述的每个单元格之间的UICollectionViewLayout垂直间距,UICollectionView并且调整它可以让表格根据需要被垂直压缩或拉伸。

我的UICollectionViewController子类有一个UIPinchGestureRecognizer. 当识别器检测到比例变化时,UICollectionView布局中的垂直单元格间距会相应更改。

如果没有进一步考虑,缩放将从内容的顶部开始,而不是触摸手势的中心。在捏合期间调整UICollectionView'contentOffset属性以提供此功能。

手势识别器还需要适应捏合时发生的拖动。这也可以通过更改UICollectionView's来处理contentOffset。一些额外的代码允许触摸手势的中心点随着手指添加到手势/从手势中移除而改变。

请注意UICollectionView,作为一个UIScrollView子类,它有自己的UIPanGestureRecognizer与我添加的交互UIPinchGestureRecogniser。我不确定这是否会导致问题。

我添加了代码以UICollectionView在捏手势期间禁用 ' 的内置滚动,但这似乎没有太大区别。我试图用内置的gestureRecognizer:shouldRequireFailureOfGestureRecognizer:来使我的失败,但这似乎完全停止了我的捏识别器的工作。我不知道这是我的愚蠢,还是iOS中的错误。UIPinchGestureRecognizerUIPanGestureRecognizer

如前所述,当前UICollectionViewCells 没有调整大小。他们只是重新定位。这是故意的。我认为验证这个概念并不重要。

什么有效

工作位工作得很好。您可以上下拖动表格。在拖动过程中,您可以添加手指并开始捏合,然后松开手指并继续拖动,然后添加并捏合等。这一切都非常流畅。在最初的 iPhone 5 上,它顺利地支持在屏幕上显示超过 200 个视图的捏合和平移。

什么不起作用 1

如果您试图在视图的顶部或底部出现在屏幕上时进行捏合,这一切都会变得有点疯狂。

  • 在滚动时,允许拖动视图,以便将其拉到可见内容之外(我想要,因为它是 iOS 上数据列表的标准行为)。
  • 然而,在比例变化时,视图会被捕捉回来,以便内容被夹在屏幕上(我不希望这种情况发生)。

这两个在捏合手势时互相打架,这使得内容上下剧烈闪烁(我绝对不想要!)。

什么不起作用 2

如果UICollectionView您在滚动时松开,则默认滚动会减速,并且当您滚动到内容之外时也会平滑地将内容弹回。目前根本没有处理这些。

  • 如果您在滚动时松开捏合手势,它就会停止。
  • 如果您使用捏合手势滚动到内容之外然后松开,它会停留在原处并且​​不会弹回。当您再次开始滚动时,它会将内容跳回。

我尝试过但无法开始工作的事情

UICollectionView,如果设置正确以支持缩放,则UIScrollView应该具有内置功能。UIPinchGestureRecogniser我想知道我是否可以利用它而不是拥有自己的UIPinchGestureRecogniser. 我试图通过设置最小和最大比例,并添加我的控制器的捏处理程序来设置它。但是,我真的不明白我应该从我的实现中返回什么viewForZoomingInScrollView:,所以我只是用[[UIView alloc] initWithFrame: [[self collectionView] bounds]]. 它使滚动视图“折叠”成一行,这不是我想要的!

最后(在代码之前)

这是一个很长的问题,所以感谢您阅读它。如果您能提供答案,将更加感谢您。如果我所说或添加的很多内容无关紧要,我很抱歉!

视图控制器的代码

0 投票
1 回答
613 浏览

ios - 将某些手势传递给 uiscrollview 并将其他手势传递给它的内容?

我很抱歉成为这样的初学者。我看过一些 UIGestureRecognizer 教程,并看到了一些关于 SO 的非常有用的答案,但是让这种独特的手势组合起作用让我望而却步。这是详细信息。在此先感谢您的帮助!

FooViewController,在界面生成器中有自己的 .xib,适合 iOS7 中的这个层次结构:

它有时也被一个子类取代,我们称之为FooViewControllerSubclass : FooViewController。这些是我正在创建的手势:

  1. 当使用 FooViewControllerSubclass 代替 FooViewController 时,UIPopover 应该接收到捏合手势,导致它被关闭。否则,它不必担心夹伤。
  2. scrollView 应该接收两个FingerPan手势,使其滚动。
  3. DrawingView应该接收所有剩余的oneFingerGestures,使其绘制。

目前,1 和 3工作得很好。但是对于 2,twoFingerPanning 只是调用 1 的捏合动作。如果我注释掉那个捏动作,那么 twoFingerPanning 只会在 DrawingView 上导致 3 的 oneFinger 绘图动作。代码摘要在这里:

作为旁注:我也很好奇整个[[self nextResponder] nextResponder]部分是否是犹太洁食(因为它有效),如果不是,我应该如何将这些信息传递到层次结构中。

谢谢!

0 投票
1 回答
404 浏览

ios - 缩放时多个 UIView 像素化

我有两个绘制一个UIBeizerPath(它必须是 uibeizarpath)的 UIView(BlueView 和 RedView)。

我的 MainView 初始化两个视图并控制缩放功能。

我可以让视图缩放,但是,当它们缩放 UIBeizerPaths 时,它们会被像素化。我尝试过使用[viewname].layer.contentsScale = [[UIScreen mainScreen] scale] * currentScale;,但这不起作用。

任何帮助将不胜感激!

通过 Photoshop 的魔力,这里有一些我试图完成的插图。

视图看起来没有缩放:

非缩放

我放大的结果:

缩放不良

缩放时所需的结果:

所需的缩放

有什么建议么?将不胜感激。这是我的代码:

主视图.h

主视图.m

蓝线.m

红线.m