2013-12-12 4 views
1

UIButton의 하위 클래스를 만들어야 subButton을 호출 할 수 있습니다. 이 subButton은 하나씩 인스턴스화되고 UIScrollView 객체에 동적으로 추가됩니다.동적으로 생성 된 uibutton에서 단일 탭이 감지되지 않음

불행히도 subButton이 예상대로 반응하지 않습니다. 첫 번째 동적 생성 된 하위 버튼에서 스크롤 한 다음 다시 되돌립니다. 그들은 단일 도청에 대한 반응을 느슨하게합니다. 나는이 행동을 설명 할 수 없다. 누군가가 왜 이런 식으로 행동하는지 설명 할 수 있습니까?

감사합니다.

소스 코드

self.subButton = [[SubButton alloc]initWithFrame:CGRectMake(69.5, y, 201, 114)]; 
[self.subButton setBackgroundColor:[UIColor blueColor]]; 
self.subButton.imageData = imageData; 
self.subButton.videoPath = videoPath; 
self.subButton.vidIndex = _indexVideo +1; 
[self.subButton drawVidPreview]; 
[self.subButton setTag:(_indexVideo +1)]; 
[self.subButton addTarget:self action:@selector(handleSingleTap:) forControlEvents:UIControlEventTouchUpInside]; 
[self.videoScroll addSubview:self.subButton]; 
[_videoPreviews addObject:self.subButton]; 

subButton 방법 drawVidPreview 자체 일부 파단을 추가한다.

+2

버튼 코드를 추가 할 수 있습니까? – amb

답변

0

UIButtons에 모두 동일한 UIGestureRecognizer 인스턴스를 추가하지 말고 각 인스턴스에 별도의 인스턴스를 추가해야하지만 모든 제스처 인스턴스는 동일한 대상을 가리킬 수 있습니다.

+0

알림을 보내 주셔서 감사합니다.하지만 그렇지 않습니다. – BCI

2

버튼이 전혀 반응하지 않습니까, 아니면 한번 살짝 누르지 않습니까? 그게 우리가 널 도울 수 있도록 도와 줄거야.

전혀 응답하지 않으면 다른보기 (보이지 않을 수도 있음)가 단추 위에 있지 않은지 확인하기 위해 뷰 계층 구조를 검사 할 것입니다. 또는 단추가 부모보기에 추가되지 않았습니까?

+0

좋은 질문입니다. 실제로 코드를 [self.subButton addTarget : self action : @selector (handleSingleTap :) forControlEvents : UIControlEventTouchUpOutside];로 변경하면 단일 탭에 반응합니다. 그러나 응답은 너무 민감합니다. 그것은 스크롤과 충돌합니다. – BCI

+0

예이 두 가지 모두가 필요합니다.이 점에 대한 지식이 부족한 것 같습니다. UIScrollview 객체의 하위 뷰를 얻는 방법을 모르겠습니다. NSMutableArray에 NSMutableArray를 추가하여 NSMutableArray에 선택 영역의 위치를 ​​수정할 수 있습니다. – BCI

+0

어쩌면 시도해보십시오 : UIControlEventTouchDown 어떻게 작동하는지보십시오. – Fluffhead

0

마침내 문제를 해결할 수있었습니다. 첫 번째 하위 버튼이 UIControlEventTouchDown을 사용하여 단일 탭핑에 응답하지 않은 이유는 uiScrollview 내용 오프셋이 음수 y 값으로 설정 되었기 때문입니다. 이것은 무엇보다 먼저 필요하지 않았고 순수한 게으름에서 이루어졌습니다. 나는 그것을 긍정적 인 가치로 주어서 그것을 바로 잡았다.

내 결론은 scrollView의 내용 오프셋 또는 내용 크기를 올바르게 설정하지 않으면 scrollView에 동적으로 추가 된 일부 단추가 적절하게 탭하는 데 응답하지 않을 수 있다는 것입니다. 모든 버튼이 uiScrollview 객체에 완전히 배치되어있는 경우에도 마찬가지입니다.

나는 이것도 uiScrollview 인스턴스의 콘텐츠 크기로 놀아서 확인할 수 있습니다. uiScrollviews 인스턴스의 y 값의 크기를 몇 포인트 만 변경하고 마지막 버튼 중 일부는 더 이상 탭핑에 응답하지 않았습니다.

y 값의 콘텐츠 크기를 다시 늘리면 버튼이 다시 반응합니다.

관련 문제