0

根据这个问题UIGestureRecognizer有一个view属性,它指的是手势附加到的视图。我在我的代码中使用了这个:

//Code for the 1st UIScrollView
UIImageView *bookCover = [[UIImageView alloc]initWithFrame:CGRectMake(50, 100, 145, 420)];
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]initWithTarget:self
action:@selector(downloadBookTapped:)];
[bookCover addGestureRecognizer:singleTap];

[bookCover release];
[singleTap release];

//Code for the second UIScrollView
UIImageView *fileCover = [[UIImageView alloc]initWithFrame:CGRectMake(50, 100, 145, 420)];
UITapGestureRecognizer *singleFileTap = [[UITapGestureRecognizer alloc]initWithTarget:self
action:@selector(downloadFileTapped:)];
[fileCover addGestureRecognizer:singleFileTap];

[fileCover release];
[singleFileTap release];

这是我使用该view属性的地方:

- (void)downloadBookTapped:(UITapGestureRecognizer *)sender
{
  UIImageView *imgView = (UIImageView *)sender.view;

  CGRect rect = [imgView frame];

  UIImageView *images = [[UIImageView alloc]initWithFrame:rect];

  //rest of code here...
}

- (void)downloadFileTapped:(UITapGestureRecognizer *)sender
{
  UIImageView *imgView = (UIImageView *)sender.view;

  CGRect rect = [imgView frame];

  UIImageView *images = [[UIImageView alloc]initWithFrame:rect];

  //rest of code here...
}

这里的问题是我有两个scrollView,每个滚动视图都包含多本书。当我在 1st 选择一本书时scrollViewimages正确显示。但是当我在 2nd 中选择一本书时scrollViewimages显示不正确。谁能解释为什么会这样?谢谢。

- -附加信息 - -

两者scrollViews具有相同的宽度和高度。当然,不同之处在于位置。第一个 scrollView 位于 (0, 0),而第二个位于 (0, 350)。你可以把这两个想象成“架子”,第一个是最上面的架子,第二个是最下面的架子。

要指定问题,假设我在第二个滚动视图中选择了一本书。然后images将显示好像我在第一个滚动视图中选择了一本书。意思images是,显示在第一个滚动视图而不是第二个滚动视图中。

4

2 回答 2

1

因为gestureRecognizer 绑定到第一个UIImageView 而不是第二个。

[bookCover addGestureRecognizer:singleTap];

为您的其他 UIImageView 执行此操作,您将获得所需的结果。

于 2012-08-09T06:02:38.907 回答
0

我现在知道我做错了什么!我没有添加images作为滚动视图的子视图,而是这样做:

[self.view addSubView:images];

这就是为什么它一直出现在顶部的原因。它应该是这样的:

[scrollBook addSubview:images];
[scrollFile addSubView:files];
于 2012-08-09T06:30:28.140 回答