2011-04-20 3 views
1


내 UIView에서 하위보기로 UIScrollview를 추가하고 UIScrollview에 UIButtons를 추가했습니다.
이제 내 문제는 사용자가 버튼을 클릭했는지 여부를 알고 싶지만 UIScrollview의 touchesbegin이 호출되지 않는다는 것입니다. 여기서 scrollview의 다른 모든 대리자 메소드가 완벽하게 작동합니다.
제가 잘못하고 계시다면 알려주십시오.touchesShouldBegin : withEvent : inContentView : UIScrollview에 대해 호출하지 않았습니다.

답변

1

버튼에 간단한 도청을 처리하려는 경우 - (void) addTarget : (id) target action : (SEL) action forControlEvents : (UIControlEvents) controlEvents 에 UIControl)에 UIButton, 그렇지 않으면 내 방식은 UIScrollView를 하위 클래스에 추가 할 수있는 대리인을 추가하고 그것에 전달하지만, 지저분한 나는 극도로 사용자 정의 동작이 필요하지 않는 한 이것을 사용하지 않을 것입니다

10

귀하의 질문에 대한 텍스트가 제목과 일치하지 않지만 이 UIScrollView의 서브 클래스에서 호출되지 않기 때문에 여기에 길을 찾은 사람은 대답이

터치되는 하위 뷰가 터치 이벤트에 응답하는 경우에만 touchesShouldBegin:withEvent:inContentView 메소드가 호출됩니다. 사용자가 UILabel과 같은 비대화 형 하위 뷰를 건 드리면이 메서드는 일반적으로 호출되지 않습니다. 해당 하위 뷰의 userInteractionEnabled 속성을 YES로 설정하여 특정 하위 뷰를 강제로 호출 할 수 있습니다.

또한 스크롤보기의 delaysContentTouches 속성의 상태를 알고 있어야합니다. YES로 설정된 경우 스크롤보기는 타이머가 만료 될 때까지 touchesShouldBegin:withEvent:inContentView:을 호출하지 않으므로 터치가 스크롤 제스처가 아닌 것으로 나타납니다. touchesShouldBegin:withEvent:inContentView:을 즉시 호출하려면 delaysContentTouches을 NO로 설정하십시오.

관련 문제