2014-01-06 68 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];