2009-12-04 6 views
0

UIImageView가 화면에서 터치하는 것을 어떻게 결정할 수 있습니까? 예를 들어 UIView에 10x10 바둑판 모양의 UIImageView를 추가했습니다. 이제 touchesBegan에서 내가 화면에서 만지는 이미지를 어떻게 알 수 있습니까? 이 구현에서 hitTest 메서드를 사용해야합니까?UIImageView의 터치 이벤트

감사합니다.

답변

2

일반적으로 가장 쉬운 방법은 UIImageView를 서브 클래 싱하고 내 자신의 터치 이벤트 핸들러를 추가하는 것입니다.

실제로 내가 주로 한 일은 UIImageView의 하위 클래스 하나를 만드는 것입니다. 유일한 목적은 다른 클래스가 다음 응답자 역할을하도록 허용하는 것입니다. 그렇게하면 모든 상황에 대해 하위 클래스를 만들 필요가 없습니다. 이러한 뷰가 필요하고 어쨌든 서브 클래스를 작성하지 않은 경우에만 가치가 있습니다.

0

이 질문은 여러 번 묻습니다. 다음 번에 검색을 사용해보십시오. 일반적으로 사용자 정의 스타일로 UIButton을 사용하여 원하는 것을 수행합니다. 그러한 변형은 하위 클래스 화없이 터치를 잡는 표준 방법을 제공합니다.

0

UIButton 제안을 확인하려면 UIImage으로 렌더링 된 UIButton에 대해 수행 한 작업을 미리 보도록하겠습니다.

UITableViewCell 내에서 접촉있어 특정 UIButton 이미지 유형을 추적했다, 그것은이 UIButton 배치 된에 행과 섹션 건네 다음 복구에 대한 관련 방법을

UIButton *_infoButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)]; 
[_infoButton setImage:[UIImage imageNamed:@"Info.png"] forState:UIControlStateNormal]; 
[_infoButton setTitle:[NSString stringWithFormat:@"%d:%d", indexPath.section, indexPath.row] forState:UIControlStateReserved]; 
[_infoButton addTarget:self action:@selector(touchedDetailedInfoButton:) forControlEvents:UIControlEventTouchDown]; 
// ... 
[ _infoButton release]; 

을 그리고 여기에 제목과 함께 재미있는 일을 :

- (void) touchedDetailedInfoButton:(NSString *)title { 
    unsigned int _section, _row; 
    const char * _indexPathCharPtr = [title cStringUsingEncoding:NSUTF8StringEncoding]; 
    sscanf(_indexPathCharPtr, "%d:%d", &_section, &_row); 
    NSUInteger _path[2] = {_section, _row}; 
    NSIndexPath *_touchedIndexPath = [[NSIndexPath alloc] initWithIndexes:_path length:2]; 
    [self doSomethingInterestingWithIndexPath:_touchedIndexPath]; 
    [_touchedIndexPath release]; 
} 

이 이것에 대해 이동하는 쉬운 방법은, 아마 그래서 다른 잘하면 사람이 나타나서 subcla 이외의 대안을 (제공 ssing UIImageView도 완벽하게 유효한 옵션입니다).