【发布时间】:2013-04-29 19:06:40
【问题描述】:
我一直在尝试只让我的UIScrollView 向一个方向滚动并且仍然获得所有UITouch 事件。我根本不完全确定这是可能的。
我试图覆盖UIResponder 的“触摸”事件,但是一旦UIScrollView 开始滚动,触摸方法就会停止调用。
然后我尝试将UIScrollView 的scrollEnabled 属性设置为false,直到我希望UIScrollView 开始接收拖动事件,但我似乎找不到让UIScrollView 开始的方法在拖动中接收触摸事件。 这可能吗?
我的下一个尝试是在滚动视图中添加“填充”,并通过使用contentOffset 属性创建我自己的“触摸事件”,但这开始调用scrollViewDidScroll: 的次数过多并且处理得像疯了似的——回复的有效性也存在一些问题。
我玩过hitTest:withEvent:、pointInside:withEvent:、touchesShouldBegin:withEvent:inContentView: 和touchesShouldCancelInContentView:,但没有成功。
从那以后,我尝试了其他一些方法,但都没有奏效。另外,根据我的发现,将 delaysContentTouches 设置为 false 会破坏滚动响应。
我会喜欢一些 real 被覆盖的触摸方法。如果我不调用 super,UIScrollView 不会收到触摸的方法。
我需要一种方法来获取UITouches(拖动、开始、释放和取消,而不仅仅是点击),而不会影响UIScrollView 的滚动,因为UIResponder“触及“一旦滚动开始,事件就会消失。这可能吗?
【问题讨论】:
标签: ios objective-c cocoa-touch uiscrollview uiresponder