Events UIScrollView子类已更改iOS7中的行为
我在UIScrollView子类中有一些自定义uicontrol。自定义控件通过检测触摸来改变控件的值,显然,在滚动视图中有触摸敏感控件。这可能很奇怪,用户是否试图上下滚动或改变控件的值 因此,我覆盖了ToucheShouldBegin:withEvent:inContentView和ToucheShouldCancelInContentView方法。在iOS5和iOS6中,如果我将touchHouldBegin设置为TRUE,则表示touch event msg被发送到子视图,而不是滚动视图,只有控件工作,滚动视图不会滚动,这很好。然而,在iOS7中,一些事情发生了变化,谁也猜不到,scrollview将滚动,就像什么都没有改变一样,但同时控件也会收到消息。如果我触摸并拖动控件的速度足够慢,它将工作,但如果我移动手指以加快速度,scrollview将接管并开始滚动Events UIScrollView子类已更改iOS7中的行为,events,uiscrollview,touch,controls,Events,Uiscrollview,Touch,Controls,我在UIScrollView子类中有一些自定义uicontrol。自定义控件通过检测触摸来改变控件的值,显然,在滚动视图中有触摸敏感控件。这可能很奇怪,用户是否试图上下滚动或改变控件的值 因此,我覆盖了ToucheShouldBegin:withEvent:inContentView和ToucheShouldCancelInContentView方法。在iOS5和iOS6中,如果我将touchHouldBegin设置为TRUE,则表示touch event msg被发送到子视图,而不是滚动视图,
- (BOOL) touchesShouldBegin: (NSSet *) _touches
withEvent: (UIEvent *) _event
inContentView: (UIView *) _view{
self.touch = _touches.anyObject;
if ([_view isKindOfClass: [MyControl class]])
{
MyControl *control = (MyControl *)_view;
if ([control touchWasOnTrackButton: _touches.anyObject] ||
[control touchWasOnInnerButton: _touches.anyObject])
{
NSLog(@"CONTROL TOUCHED");
return YES;
}
else
{
NSLog(@"TABLEVIEW TOUCHED");
return NO;
}
}
else
{
NSLog(@"TABLEVIEW TOUCHED");
BOOL touchesShouldBegin = [super touchesShouldBegin: _touches withEvent: _event inContentView: _view];
return touchesShouldBegin;
}
}
有人知道iOS7发生了什么变化,以及他们是如何解决这个问题的吗。谢谢,所以我可以用一些相当粗糙的方法解决这个问题 我的UIControl子类具有用于controlStartedTracking和controlStoppedTracking的协议方法。在controlStatedTracking中,我将myScrollViewReference.scrollEnabled设置为FALSE;在controlStoppedTracking中,我重新启用了myScrollViewReference.scrollEnabled
如果有人做得更好,让我知道,听起来我很伤心。请向苹果提交一个bug!