将UIScrollView连接到UIView类

时间:2015-06-16 11:46:18

标签: ios swift uiview uiscrollview iboutlet

我目前正在制作一个"幻灯片"用户可以滚动的图片。按照指南,我做了它,以便我使用的UIScrollView在用户滚动时显示上一张和下一张图片的边缘。如果用户触摸图片的一个边缘,则会产生副作用,因为这些边缘在技术上不在UIScrollView本身的边框内。为了弥补这一点,我将创建一个UIView,我将在其中嵌入UIScrollView。 UIVew将扩展页面的整个宽度,以便用户在触摸图片边缘时可以滚动。为此,我需要通过IBOutlet将UIScrollView连接到UIView的代码。通常,只需按住Ctrl键并单击UIScrollView并拖动到代码即可。然而,这对我来说似乎并不适用,我为什么感到难过。

这是我正在处理的环境的屏幕截图,当我尝试按住UIScrollView并按下代码来创建IBOutlet时(它根本不提供创建任何内容的选项)。< / p>

enter image description here

以下是运行模拟器生成的屏幕截图。如果我尝试单击并拖动我的鼠标当前所在的位置,它不会滚动,这是我想要纠正的问题。

enter image description here

2 个答案:

答案 0 :(得分:1)

这是因为您应该将故事板视图链接到UIView类。您可以在自定义类设置中选择ScrollViewController类。我添加了示例jpg enter image description here

答案 1 :(得分:0)

你在寻找的不是那么容易的&#39;只需连接两个。

有两种选择:

1)将来你应该使用UICollectionView并自己实现分页行为,这是我认为最干净的代码。

永远不会想到第二个选项 - 我发现你实际上已经使用过这个 2)直接回答你的问题:

您必须将包含UIScrollView的UIView子类化为:

头:

#import <UIKit/UIKit.h>

@interface SCTouchForwardView : UIView

@property (nonatomic, weak) IBOutlet UIView* receiver;
@property (nonatomic, assign) BOOL force;

@end

实现:

#import "SCTouchForwardView.h"

@implementation SCTouchForwardView

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    UIView* result = [super hitTest:point withEvent:event];
    if (![result isKindOfClass:[SCTouchForwardView class]]) {
        return result;
    }
    if (result==self) {
        UIView *result = [self.receiver hitTest:[self convertPoint:point toView:self.receiver] withEvent:event];
        if (result) {
            return result;
        }else{
            if (self.force) {
                return self.receiver;
            }
            return nil;
        }
    }
    return nil;
}

@end

当您想要使用它时,您只需右键单击 - 从容器拖动到UIScrollview并选择接收器&#39;你想做的事情会奏效!