저는 PageViewController에 여러 컨트롤러가 있으며 컨트롤러 하나에 몇 개의 슬라이더가 있습니다. 이제는 사용자가 정확히 슬라이더 원을 만져야한다는 문제가 있습니다. (올바른 표현, 엄지에 대해 확실하지 않습니다 - 움직이는 부분) 슬라이더에 반응하고 전체 PageViewController가 아닌 영역을 늘리고 싶습니다. 나는이 솔루션을 시도했지만 도움이되지 않습니다컨트롤러 내부에 UISlider가있는 UIPageViewController - 슬라이더의 히트 영역을 늘립니다.
thumbRectForBounds :
- (CGRect)thumbRectForBounds:(CGRect)bounds trackRect:(CGRect)rect value:(float)value { return CGRectInset ([super thumbRectForBounds:bounds trackRect:rect value:value], 15, 15); }
증가 그러나 hitTest 지역 :
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { if (CGRectContainsPoint(CGRectInset(self.frame, 200, 200), point) || CGRectContainsPoint(CGRectInset(self.frame, 200, 200), point)) { return self; } return [super hitTest:point withEvent:event]; }
내 사용자 정의 슬라이더에서 이러한 방법이 왜냐하면 저는 이것을 재사용하고 싶습니다. 마지막으로 발견 한 것과 아직 시도하지 않은 것은 제스처를 사용하고 PageViewController를 사용하지 않도록하는 슬라이더 위에 객체 레이어를 만드는 것입니다.하지만 어떻게해야할지 모르겠습니다. 좋은/최선의 해결책인지 확실하지 않습니다. 당신의 CustomSlider
클래스 재정의 thumbRectForBounds
방법에서
이것은 내가 처음 시도한 것입니다. CGRectInset이 더 잘 작동하기 때문에 방금 CGRectInset을 사용했습니다. 그러나 예제 값을 15보다 크게 설정하면 엄지 손가락이 누락됩니다. 그리고이 방법은 오버라이드 (override)되므로, 제어의 초기화 후에 도움이되지 않는다고 부르는 것이 좋습니다. 아무 것도 설정하지 않고 반환하는 CGRect를 사용하지 마십시오. –