iPhone SDK可可触摸 - 通行证从父UIView的接触到孩子的UIScrollView(iP

2019-09-29 15:07发布

我有一个UIView我在厦门国际银行IB内,里面是一个UIScrollView是小80×80平方和动态加载8左右80×80缩略图。

所述的UIScrollView器没有限幅图像,使它们伸出任一侧,以便可以左右滑动,以滚动所选择的图像进中心,寻呼是关于这样它们卡TI每个图像。

我研究后发现,这是做到这一点的最好的,可能唯一途径。

该UIScrollView中坐落在一个“容器”的UIView的原因之一,它的存在接收触摸/滑动和传下来,这是孩子的UIScrollView否则所有触摸将有小80×80的UIScrollView面积启动,我把它们婉沿着图像的行的任意位置。

我已经看到了一些示例代码某处这样做,但就是无法实现它。

把我当作一个小白,从年初开始结束,应该如何的UIView和UIScrollView的IB中被设置为允许通过任何接触,和什么样的代码,我应该投入到哪里?

UIView的被设置为scroll_container和孩子的UIScrollView是char_scroll

目前,我已经得到了这一切除了触摸工作从父到子被过去了,此刻的接触必须始终的UIScrollView内开始(在中心微小的80×80盒)时,我希望能够刷卡向左或向右长480X80水平母公司的UIView,并有这仍然滚动孩子的UIScrollView。

希望你能帮助和理解我的意思!

Answer 1:

我所有的instrincts说这是不是这样做的方法!

即使:

(一)苹果文档说这个工程,以及如何做到这一点;

(二),你可以得到的则hitTest thingummy工作,并得到很好的流动的UIEvent对象

如果是我,我会想到第一个变化让苹果的OS打破代码!

我会做的是:

  • 使用Core Animation的API。
  • 模型图像的减速,当移动手指放开他们的自己
  • 尝试减速和不同的捕捉算法(尝试与不反弹),直到你找到一个可接受的用户体验(尝试在DHTML原型,然后才会进入可可触摸)的不同速率
  • 停止使用的UIScrollView和使用简单的一个UIView

您需要在您的状态模型:

STATE1:在(△X,增量y)的位置的变化的要求用户在该触摸

要么

STATE2:在(△X,增量y)和(veclocity的x,速度y)和时钟()在手指的时间释放时如果图像仍减缓,而不是来休息

状态3:图像静止的

从这个动画参数可以这样计算:

初始:增量x,增量y,速度-X,速度-Y,时钟()在毫秒时间

如果支持反弹:任何干预转折点

最后:增量x,增量y,速度-X,速度-Y,时钟()在毫秒时间

和从这些动画参数,一组动画关键帧可以计算并供给到核心动画。 (大量的关键帧所必需的平滑显示在动画过程中一个自定义的减速)。

-

什么是你发现说你的建议是什么是最好的方式引用?



Answer 2:

你可以继承的UIScrollView并重写-pointInside:withEvent:方法方法。 的UIView的默认实现返回类似CGRectContainsPoint(self.bounds,thePointToTest);. 只是测试在更宽的矩形。



Answer 3:

你这样做的方式大多是在那里。 我试着子类的UIView通过触摸事件下来,但我第一次尝试没有工作,我发现这个,而是: 如何延长UIScrollView的响应区域

基本上,子类的UIScrollView延长其则hitTest范围。 你仍然有包含的UIView,但它会被动。



文章来源: iPhone sdk Cocoa Touch - Pass touches down from parent UIView to child UIScrollview