1

在我的程序中,我将 a 配置UIView为放置在多个UIBUttons 上。这样您就可以在视图中平移并让按钮移动以及选择按钮本身。但是,当按钮位于 this 下方时,无法选择它们UIView。有人知道在这些条件下如何配置 aUIButton吗?userInteractionEnabled

4

2 回答 2

0

与其更改 UIButton 的 userInteractionEnabled 的值,不如将 UIButton 顶部的 UIView 的 userInteractionEnabled 值设置为 no。

当 UIView 的 userInteractionEnabled 设置为 YES 时,UIView 正在“吃掉”事件。然后该按钮将永远不会收到任何事件。

于 2012-06-11T07:24:02.057 回答
0

这种技术对我有用 - 警告:我只是在它没有编译的情况下输入了它,或者它是作为起点给出的。

  1. 创建按钮并将它们放置在视图层次结构的顶部(即它们正常交互并响应点击的位置,在 UIView 顶部)
  2. 创建按钮时 - 在数组中保留对它们的引用。

    NSMutableArray* arrayOfPeskyButtons;

  3. 记录按钮框架

    NSMutableArray* arrayOfPeskyFrames = [NSMutableArray mutableArray];
    for ((UIButton*)button in arrayOfPeskyButtons)
    {
        [arrayOfPeskyFrames addObject:[NSValue valueWithCGRect:button.frame];
    }
    
  4. 当您的应用响应 UIView 上的操作时 - 平移或将其更改为 UIScrollView(可能是最好的顺便说一句),然后相应地移动按钮的框架,以便它们在用户看来是固定的。

我已经使用这种技术来创建位于滚动视图顶部的按钮“叠加层”,并且效果出奇的好。只需在 scrollView 委托方法中。

-(void)scrollViewDidScroll:(UIScrollView *)scrollView

记下滚动视图的偏移量,并根据滚动视图的偏移量相应地调整按钮的每个框架

 CGPoint offset = scrollView.contentOffset;

遍历按钮数组并移动它们。

 int index = 0;
 for ((UIButton*)button in arrayOfPeskyButtons)
 {
     CGRect originalFrame = [[arrayOfPeskyFrames objectAtIndex:index]CGRectValue];
     CGRect currentFrame = button.frame;
     //adjust frame
     //e.g.
     currentFrame.origin.x = originalFrame.origin.x + offset.x;

     button.frame = currentFrame.;
     index++;
 }
于 2012-06-11T07:54:45.397 回答