2

我正在尝试创建一个可水平滚动的 UIScrollView。我正在使用这个 Ray Wenderlich 教程。我有滚动视图出现并且工作正常,但目前在教程的“检测滚动视图之外的触摸”部分遇到了困难。

问题是我正在以编程方式创建所有内容。我对教程代码的这一部分(在ScrollViewContainer.m中)特别难过:

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event {
    UIView *view = [super hitTest:point withEvent:event];
    if (view == self) {
        return _scrollView;
        }
    return view;
}

IBOutlet 在哪里_scrollView(在ScrollViewContainer.h中):

@property (nonatomic, strong) IBOutlet UIScrollView *scrollView;

据我了解,_scrollView“连接”是通过插座在情节提要上完成的。我应该如何以编程方式做到这一点?

4

3 回答 3

1

通过使用此代码,我找到了我的触摸对象并隐藏了视图,因此希望您可以通过一些技巧和修改相同的代码来修复它,只需传递您的滚动视图对象并在其中记录它是否被触摸。

#pragma mark
#pragma mark - Touch Events
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint imgPop = [touch locationInView: _scrollView];
    if ([_scrollView pointInside:imgPop withEvent:event])
    {
        NSLog(@"Touch Inside ScrollView");
    } else {
        NSLog(@"Touch Outside ScrollView");
    }
}

如果您发现实施它有任何困难,请告诉我。

于 2013-10-10T04:48:14.537 回答
0

检测外部的触摸,您scrollview可以简单地访问touchEvents.UIView

  • 接触开始,
  • 触摸结束,
  • 感动了,
  • 触摸取消

尝试为您想要的任何单击开始触摸。

于 2013-10-10T04:43:41.970 回答
0

hitTest:withEvent:仅当您使滚动视图小于屏幕(并将其设置clipsToBounds为)时,才需要 Ray Wenderlich 教程中的自定义方法NO

应用截图

该方法将使滚动视图之外发生的触摸被转发给它。

所以在你的源代码中你需要调用类似的东西

@property (nonatomic, strong) UIScrollView *scrollView;
...
UIScrollView *scrollview = [[UIScrollView alloc] initWithFrame:CGRectMake(
    20, 
    20, 
    self.view.frame.size.width - 20, 
    self.view.frame.size.height - 20
)];   
于 2014-03-26T19:45:43.153 回答