【问题标题】:UIGestureRecognizer's sender view not working properlyUIGestureRecognizer 发件人视图无法正常工作
【发布时间】:2012-08-09 14:30:28
【问题描述】:

根据这个questionUIGestureRecognizer 有一个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,每个滚动视图都包含多本书。当我在第一个scrollView 选择一本书时,images 显示正确。但是当我在第二个scrollView 中选择一本书时,images 显示不正确。谁能解释为什么会这样?谢谢。

---附加信息---

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

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

【问题讨论】:

    标签: objective-c uiimageview uigesturerecognizer


    【解决方案1】:

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

    [bookCover addGestureRecognizer:singleTap];
    

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

    【讨论】:

    • 糟糕!我已经有了!我只是忘了在上面的代码中添加它。我将对其进行编辑以添加此内容。
    【解决方案2】:

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

    [self.view addSubView:images];
    

    这就是它不断出现在顶部的原因。应该是这样的:

    [scrollBook addSubview:images];
    [scrollFile addSubView:files];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      相关资源
      最近更新 更多