2014-01-06 4 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 with iOS 7 –

+0

시뮬레이터에서 실행 중입니다. 색상 오버레이 레이어에는 옵션이 없습니다. 물건을 추측하고 사람들이 야생 거위 쫓아 다니기 전에 확인하십시오. 업데이트 된 질문을 확인하십시오. –

+0

잠깐만 기다려주세요. 메뉴 이름이 맞지 않을 수도 있습니다. – 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]; 
관련 문제