2011-09-13 2 views
1

인 경우 iphone UIButton 선택기가 작동하지 않습니다. 여러 가지 방법을 시도했지만 코드에 문제가 있는지 찾을 수 없으므로 도와주세요!프레임 원점이 0

지도에서 핀을 클릭 할 때 맞춤 설명 선 풍선을 표시하고 풍선 내부에 일부 이미지를 표시하며 사용자가 자세한 정보를 클릭하고 액세스 할 수 있도록 세부 표시 단추를 원합니다. 내 문제는 거품과 버튼이 표시되지만 버튼을 클릭하면 선택기 메서드가 호출되지 않는다는 것입니다. 처음에는

- (id) initWithAnnotation:(id)annotation reuseIdentifier:(NSString *)reuseIdentifier 

:

// 편집 : 나는 너무 많은 코드를 넣어 처음으로, 나는, 답

방법에

주셔서 감사합니다 더 구체적으로 노력하고 편집 할 것이기 때문에 죄송합니다 내가 하위 뷰로 추가하고, 거품 콜 아웃을 사용자 정의 할 수있는 동시에 나는 약간의 라벨과 이미지와 I을 만들 정상 핀

self = [super initWithAnnotation:myAnnotation reuseIdentifier:reuseIdentifier]; 
self.frame = CGRectMake(0, 0, kWidth, kHeight); 
self.backgroundColor = [UIColor clearColor]; 

imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon.png"]]; 
imageView.frame = CGRectMake(kBorder, kBorder, kWidth - 2 * kBorder, kWidth - 2 * kBorder); 
[self addSubview:imageView]; 

대신 사용자 정의 아이콘을 변경하려면 이미지 뷰를 표시 내가하지 않기 때문에이 나는 둥근 RECT 배경 및 텍스트에 크기를 만들 그 후

calloutView = [[UIView alloc] initWithFrame:CGRectMake(10, 30, restNameLbl.frame.size.width + 30, 60)]; 
    calloutView.hidden = YES; 

호출되는 핀의 선택 방법까지 처음에 숨겨져있는보기 calloutView에 dded, 나는 코드의 일부 생략

[calloutView addSubview:backgroundRect];   
[calloutView addSubview:restNameLbl];   
[calloutView addSubview:likeImg]; 
[calloutView addSubview:likesLbl]; 
[calloutView addSubview:noLikeImg]; 
[calloutView addSubview:noLikesLbl]; 

: 그것은 지금 중요하다고 생각합니다, 제가 넣어해야한다면, 나는 기본 아이폰 거품 맵 유구에게

을 시뮬레이션하기 위해 일부 그래픽 기능을 사용하고 난이 calloutView에 이전에 생성 된 모든 요소를 ​​추가 알려 그런 다음 그 위치를 올바른 위치에 놓습니다. 나는 사용자가 더 많은 정보에 액세스 할 수 있도록 상세 공개 버튼을 보여주고 싶은,하지만 난 calloutView에 직접 추가 한 경우 선택기 이벤트가 트리거되지 않습니다 calloutView라고 -

//position callout above pin 
calloutView.frame = CGRectMake(-25, -calloutView.frame.size.height-10, calloutView.frame.size.width + 50, calloutView.frame.size.height);  
[self addSubview:calloutView]; 

그리고 같은 거품보기

. 그래서 나는 그것이 부모 뷰에 버튼을 추가하는 사용자들은 다른 방식으로 그것을 시도, 예에 숨겨진 상태를 넣고 선택 방법

accessory = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
[accessory setTitle:myAnnotation.idRest forState:UIControlStateNormal]; 
accessory.hidden= YES; 

// 주에 보여 : 여기가 문제가되는 경우가 있어요 이 프레임 라인을 생략하면 모든 것이 완벽하게 작동합니다. origin.x와 origin.y를 0,0으로 설정하면 버튼 셀렉터가 작동하지 않는보기의 올바른 위치에 해당 숫자가 표시되도록 변경했을 때

accessory.frame = CGRectMake(110, calloutView.frame.origin.y+25, accessory.frame.size.width, accessory.frame.size.height); 

그런 다음 선택기 이벤트를 클릭 할 때 추가하고 calloutAccessoryTap 함수를 호출하면 호출됩니다. 액세서리의 프레임이 표시되지 나 origin.x와 y가 모두 0

accessory.userInteractionEnabled = YES; 
[accessory addTarget:self action:@selector(calloutAccessoryTap) forControlEvents: UIControlEventTouchUpInside | UIControlEventTouchCancel]; 

로 설정 그리고 마지막 경우 내가 기본보기에있는 버튼을 추가

[self addSubview:accessory]; 

그래서 처음에보기는 단지입니다 아이콘이 있으면 레이블 및 이미지가있는 설명 선보기가 숨겨지고 세부 단추에도 동일한 작업이 수행되며 핀이 선택되고 거품이 표시되어야 할 때 설명 선보기와 단추가 표시됩니다.모든 것이 화면에서 바로 볼 수 있지만 액세서리의 프레임이 원점 x 및 y 0,0과 구분되는 올바른 위치로 설정되면 셀렉터가 작동을 멈 춥니 다.

많은 다른 것들을 시도했지만 아무도 노력하지 않았기 때문에 당신이 나를 도울 수 있기를 바랍니다.

+2

당신은 코드를 다듬을 수 있습니다. 너무 많이 ... 문제를 설명하고 문제를 일으키는 코드는 무엇입니까? 해결책을 찾기 위해이 코드를 모두 통과하기가 너무 어렵습니다. – lukya

답변

1

코드를 읽는 데 시간이 많이 걸리므로 포인터 만 제공 할 것입니다. UIButton "accessory" 위에 하위 뷰를 추가하고 있습니까? 그렇다면 물론 버튼은 탭을 감지하지 못합니다. 하위 뷰가 서로 위에 추가되므로 버튼 상단에 투명한 뷰를 배치하면 효과적으로 사용할 수 없게됩니다.

+0

액세서리 마지막으로 뷰에 추가 된 것이므로 문제가 아니며 프레임이 0,0으로 설정되면 핀 위치에 그려지고 모든 것이 올바르게 작동하지만 찾기가 올바른 좌표로 이동하면 정보와 함께 버블 내부에 표시 될 화면에서 선택자가 작동을 멈 춥니 다. – nirvik

+0

버블은 무엇입니까? 그리고 당신은 어떻게 "거품 내부에 나타났다"는 뜻입니까? – tipycalFlow

+0

opps, 미안해 내가 그런 식으로 생각한거야! 내가 풍선에서, 당신이지도의 핀을 클릭 할 때 표시되는보기로 전화; 기본적으로 이미지, 제목 및 자막이 있습니다. 그러나 내가 원하는대로 사용자 정의하고 싶습니다. 코드에서 콜 아웃 뷰 (calloutView)입니다. 버블 내부에 표시하려면 버블의 오른쪽 중간 크기에 액세서리 버튼을 배치하기 위해 무언가의 제목이 아닌 뷰 내부에 멋진 장소를 넣으십시오. – nirvik