创建一个可滚动的菜单,其中UIImages表示每个可能的选择。这些UIImages必须能够逐个捕捉到网格

时间:2011-09-02 06:09:40

标签: iphone ios ipad uiscrollview uiimageview

我正在尝试创建一个菜单(使用UIScrollView),用户可以在其中选择图像(使用UIImageViews)。

我打算随时可以看到至少3张图片。当我滚动时,图像将能够捕捉到位。

但是,如果我要使用UIScrollView,它足够大,可以在任何时间显示3个图像,并且我启用分页,分页将所有3个图像移动到一起并仅在接下来的3个图像上捕捉。

如果我要使用仅适合1个图像的UIScrollView,我启用clipsToBounds(这可以帮助我绘制超出UIScrollView边界的图像)。我的手势只能在UIScrollView中检测到,我希望只要触摸任何图像就能检测到我的手势。

感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用以下UIScrollView方法根据需要从代码中滚动它。

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated

您可以通过以下UIScrowViewDelegate方法调用此方法。 - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

因此,您可以管理滚动视图将调用多少。

为了获得触摸,实现一个单独的类来显示图像(从UIImageView或UIView继承它)并实现touchesBegin或touchesEnded。在这里,当您在自定义视图中触摸时,调用父视图的某些方法并使用适当的参数通知它(您可以指定标记属性并将其传递给滚动视图以准确找到被点击的图像)。

.....我不确定天气我是在解决你的问题.....所以如果你需要任何进一步的帮助,请发布在这里。

答案 1 :(得分:0)

我编写了一个自定义的UIView类,它覆盖了UIView的hitTest方法。

在自定义UIView类的标题中,声明一个UIScrollView,稍后你需要将显示菜单的UIScrollView分配给这个变量。

UIScrollView *thatScrollView;

在实现中,记得合成变量并覆盖hitTest

@synthesize thatScrollView;

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    if ([self pointInside:point withEvent:event]) {
        return thatScrollView;
    }
    return nil;
}

然后在UIViewController类中,创建一个类的实例并指定要滚动的滚动视图:

hiddenView.underneathButton = scrollView1;