我目前正在制作一个"幻灯片"用户可以滚动的图片。按照指南,我做了它,以便我使用的UIScrollView在用户滚动时显示上一张和下一张图片的边缘。如果用户触摸图片的一个边缘,则会产生副作用,因为这些边缘在技术上不在UIScrollView本身的边框内。为了弥补这一点,我将创建一个UIView,我将在其中嵌入UIScrollView。 UIVew将扩展页面的整个宽度,以便用户在触摸图片边缘时可以滚动。为此,我需要通过IBOutlet将UIScrollView连接到UIView的代码。通常,只需按住Ctrl键并单击UIScrollView并拖动到代码即可。然而,这对我来说似乎并不适用,我为什么感到难过。
这是我正在处理的环境的屏幕截图,当我尝试按住UIScrollView并按下代码来创建IBOutlet时(它根本不提供创建任何内容的选项)。< / p>
以下是运行模拟器生成的屏幕截图。如果我尝试单击并拖动我的鼠标当前所在的位置,它不会滚动,这是我想要纠正的问题。
答案 0 :(得分:1)
这是因为您应该将故事板视图链接到UIView类。您可以在自定义类设置中选择ScrollViewController
类。我添加了示例jpg
答案 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;你想做的事情会奏效!