iOS上的按钮不会在touchUpInside上发送事件

时间:2012-07-19 14:28:27

标签: ios uibutton touch xib

我从自定义视图中创建了一个.xib文件。 我为该视图创建了.h / .m文件。 我将ctrl从按钮拖动到头文件以创建IBAction并将值设置为touchUpInside。以下是发生的事情:

http://screencast.com/t/R1WTpK7xp

WTF?

当up在按钮之外时会触发事件?

编辑:

以下是截图:

enter image description here

投票结果是什么?我没有看到这一点。

View.h

#import <UIKit/UIKit.h>
#import "DrawingViewDelegate.h"

@interface DrawingBottomToolbarView : UIView

@property (weak) id <DrawingViewDelegate> delegate;

- (IBAction)lineSegmentButtonPush:(id)sender;

@end

View.m

#import "DrawingBottomToolbarView.h"

@implementation DrawingBottomToolbarView

@synthesize delegate;

- (id)initWithFrame:(CGRect)frame
{
    NSLog(@"frame");
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        [self addSubview:[[[NSBundle mainBundle] loadNibNamed:@"DrawingBottomToolbarView" owner:self options:nil] objectAtIndex:0]];
        //[[[NSBundle mainBundle] loadNibNamed:@"DrawingBottomToolbarView" owner:self options:nil] objectAtIndex:0];
        //[self addSubview:self.];
    }

    return self;
}

//-(id)initWithCoder:(NSCoder *)aDecoder{
//    
//    NSLog(@"coder");
//    if ((self = [super initWithCoder:aDecoder])){
//        [self addSubview:[[[NSBundle mainBundle] loadNibNamed:@"DrawingBottomToolbarView" owner:self options:nil] objectAtIndex:0]];
//    }
//    return self;
//}

- (IBAction)lineSegmentButtonPush:(id)sender 
{

     NSLog(@"line push");
}

@end

我不知道问题在哪里。

编辑2:

我尝试将按钮设置为插座并在代码中添加目标/操作,同样的事情发生:

·H

@property (weak, nonatomic) IBOutlet UIButton *lineSegmentButton;

的.m

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        [self addSubview:[[[NSBundle mainBundle] loadNibNamed:@"DrawingBottomToolbarView" owner:self options:nil] objectAtIndex:0]];
        self.currentSelectedPathSegment = NoneSegment;

        [self.lineSegmentButton addTarget:self action:@selector(lineSegmentButtonPush:) forControlEvents:UIControlEventTouchUpInside];

    }

    return self;
}

编辑3:这是我添加两个视图的地方。图纸视图是在代码中创建的,bottomToolbar是从.xib文件创建的。

kBottomToolbarHeight是常量,其值与.xib文件中定义的高度相同。

- (void)viewWillAppear:(BOOL)animated
{
    [self.view addSubview:self.drawingView];
    [self.view addSubview:self.bottomToolbar];

    CGRect selfRect = self.view.bounds;
    CGRect drawingViewRect = selfRect;
    CGRect bottomToobarRect = selfRect;

    drawingViewRect.size.height = selfRect.size.height - kBottomToolbarHeight;
    bottomToobarRect.size.height = kBottomToolbarHeight;
    bottomToobarRect.origin.y = drawingViewRect.size.height;

    self.drawingView.frame = drawingViewRect;    
    self.bottomToolbar.frame = bottomToobarRect;    
}

1 个答案:

答案 0 :(得分:0)

您在截屏视频中提及并显示的行为与我在视图层次结构中的某个位置具有UITapGestureRecognizer的父视图时的体验完全相同。

我不确定是否将您的问题标记为this one which helped me solve my problem的可能副本。

作为参考,这不是iOS 6.0中的问题,只是早期版本。