2012-02-03 51 views
0

我有一个按钮,当我按下它时,它不会触发我添加的目标选择器。我制作了不同的图片按钮,所以我可以看到我在按下它。除非我在外面拖动,否则UIButton不会在touchUpInside上触发目标?

所以这里是滑稽如果我按下,并拖出按钮的外部,但不是在按钮的直接superView之外,目标选择器被激发!

我也在测试中设置setClipsToBounds:YES在所有超级/子视图上,以确保它仍然在视图边界中。似乎处于界限之内。在按钮区域外拖动似乎是全方位的,所以它不像我只能点击/拖动右边。也上下工作。我可以点击,然后拖出来,然后运行。如果我没有开始拖动,只需轻按并按住,该按钮将突出显示,然后返回到未选中状态。

这里是按钮的代码。该按钮与UITextView一起位于UIView上,实际上是UITextView的onTop。 UIView的,所有这一切是在上大图,这是一个缩放/滚动视图

 messageLookupButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 21, 20)]; 
     [messageLookupButton setTitle:@"junk" forState:UIControlStateNormal]; 
     [messageLookupButton sizeToFit]; 
     [messageLookupButton setTag:kGearButtonView]; 

      //Get the images for the buttons 
     UIImage *gearButtonImage = [UIImage imageNamed:@"gear.png"]; 
     UIImage *gearButtonImage2 = [UIImage imageNamed:@"StatusLightOn.png"]; 

     [messageLookupButton setImage:gearButtonImage forState:UIControlStateNormal]; 
     [messageLookupButton setImage:gearButtonImage2 forState:UIControlStateHighlighted]; 
     [messageLookupButton addTarget:self action:@selector(gearPressed:) forControlEvents:UIControlEventTouchUpInside]; 

     [[NSNotificationCenter defaultCenter] addObserver:self 
               selector:@selector(processLookupResults:) 
                name:kRefreshFromPopover object:nil]; 
     [self addSubview: messageLookupButton ]; 
     [messageLookupButton release]; 

     [messageLookupButton setCenter:CGPointMake(CGRectGetMaxX(elementViewContents.bounds) -kElementContentFrameOffset -(CGRectGetWidth(messageLookupButton.bounds)/2), CGRectGetMidY(elementViewContents.bounds))]; 


     [self bringSubviewToFront:messageLookupButton]; 

滚动视图上有几个手势识别。尽管它们似乎不会干扰我放在屏幕上的其他按钮和控件。虽然我感觉它的滚动视图是问题所在。

滚动视图代码片段:

[scrollContentView setUserInteractionEnabled:YES]; 
[scrollContentView setExclusiveTouch:YES]; 
[scrollContentView setCanCancelContentTouches:YES]; 
[scrollContentView setDelaysContentTouches:YES]; 

回答

0

我结束了刚添加齿轮作为图像视图,则创建了一个不可见按钮,这是尺寸与我放置在齿轮图示了UIView相同。

-(void) addMessageLookupSelector { 
     // Set a default Color if there is none 
    if (_isMessageLookupField){ 
      // Add Gear to End Of Text Field 
     if (!messageLookupImageView) { 
      messageLookupImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 21, 20)]; 
      [messageLookupImageView setTag:kGearButtonView]; 
      [messageLookupImageView setImage:[UIImage imageNamed:@"gear.png"] ]; 

      [self addSubview: messageLookupImageView ]; 
      [messageLookupImageView release]; 
     } 
     [self positionMessageLookupImageView ];  
    } 
    [self setNeedsDisplay]; 
} 



    - (void)makeControlEditable { 

      //Setup the TextField so we can edit its value, need to see if there is a Write Animation Assocated with Element 
     [self setTheWriteTag]; 
     if (writeTag) { 
      writeInputRequestedButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
      [writeInputRequestedButton setFrame:elementViewContents.frame]; 
      [writeInputRequestedButton setUserInteractionEnabled:YES]; 
      [writeInputRequestedButton setEnabled:YES]; 
       // [writeInputRequestedButton setBackgroundColor:[UIColor clearColor]]; 
      [self addSubview: writeInputRequestedButton]; 
      [self bringSubviewToFront:writeInputRequestedButton]; 
      [writeInputRequestedButton addTarget:self action:@selector(wantsToEditValue:) forControlEvents:UIControlEventTouchUpInside]; 
     } 
    } 
相关问题