2014-01-06 65 views
0

我正在制作一个由UIImageView和Label组成的自定义控件。该控件的行为就像一个复选框。UIImageView没有响应某些边缘上的手势

下面是代码:

-(instancetype) initWithTitle:(NSString *)title normalCheckBoxImage:(NSString *)normalCheckBoxImage selectedCheckBoxImage:(NSString *)selectedCheckBoxImage 
{ 
    self = [super init]; 

    self.userInteractionEnabled = YES; 

    self.normalCheckBoxImageName = normalCheckBoxImage; 
    self.selectedCheckBoxImageName = selectedCheckBoxImage; 
    self.title = title; 

    [self setupSubViews]; 

    [self registerGestureRecognizers]; 

    return self; 
} 

-(void) registerGestureRecognizers 
{ 
    UITapGestureRecognizer *singleTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(checkBoxTapped:)]; 
    singleTapGestureRecognizer.delegate = self; 
    singleTapGestureRecognizer.numberOfTapsRequired = 1; 

    [self.checkBoxImageView addGestureRecognizer:singleTapGestureRecognizer]; 
} 

-(void) checkBoxTapped:(UITapGestureRecognizer *) recognizer 
{ 
    self.isChecked = !self.isChecked; 

    if(self.isChecked) 
    { 
     [self.checkBoxImageView setImage:[UIImage imageNamed:self.selectedCheckBoxImageName]]; 
    } 

    else 
    { 
     [self.checkBoxImageView setImage:[UIImage imageNamed:self.normalCheckBoxImageName]]; 
    } 

} 

-(void) setupSubViews 
{ 
    self.checkBoxImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:self.normalCheckBoxImageName]]; 

    self.checkBoxImageView.frame = CGRectMake(0, 0, 50, 50); 

    NSLog(@"width = %f; height = %f",self.checkBoxImageView.frame.size.width,self.checkBoxImageView.frame.size.height); 

    [self.checkBoxImageView setUserInteractionEnabled:YES]; 

    // The init with frame should be replaced by the NSConstraints 
    self.titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.checkBoxImageView.frame.size.width + 5, 10, 100, 20)]; 

    self.titleLabel.text = self.title; 

    [self addSubview:self.checkBoxImageView]; 
    [self addSubview:self.titleLabel]; 
} 

我已附加手势识别到的UIImageView。但由于某种原因,它只会在我接近UIImageView的左边缘时触发。我不确定我做错了什么。如果我在uIImageView的中间触摸,那么它什么也不做。

这里是图像:

enter image description here

enter image description here

+0

颜色叠加层没有选项。 Xcode 5与iOS 7 –

+0

我正在模拟器上运行。没有颜色叠加层的选项。请在采取行动之前检查一下,并让人们进行wild cha追逐。看看我更新的问题。 –

+0

等待一分钟让我给你图像可能是错误的菜单名称不在mac上 – amar

回答

0

问题是为超级视图帧是不正确的。而不是宽度和高度50 X 50它是50 X 20.

AZCheckBox *checkbox = [[AZCheckBox alloc] initWithTitle:@"I agree" normalCheckBoxImage:@"NormalCheckBoxImage" selectedCheckBoxImage:@"SelectedCheckBoxImage"]; 
    checkbox.frame = CGRectMake(100, 100, 200, 50); 

    checkbox.delegate = self; 

    [self.view addSubview:checkbox];