Bir UIScrollView
etkin çağn ile çerçeve genişliği (veya yüksekliği) adedi durur. Yani ilk adım, sayfalarınızın ne kadar geniş olmasını istediğinizi belirlemektir. Bunu UIScrollView
. Ardından, alt görüntünüzün boyutlarını, ihtiyaç duyduğunuz kadar büyük ayarlayın ve merkezlerini UIScrollView
genişliğin katlarına göre ayarlayın .
Ardından, set elbette diğer sayfaları, görmek istiyorum çünkü clipsToBounds
hiç NO
mhjoy belirtildiği gibi. İşin püf noktası, kullanıcı UIScrollView
çerçevesinin aralığı dışında sürüklemeye başladığında kaydırmasını sağlamaktır . Benim çözümüm (bunu çok yakın zamanda yapmak zorunda kaldığımda) şuydu:
Ve UIView
alt görünümlerini ClipView
içerecek bir alt sınıf (yani ) oluşturun UIScrollView
. Esasen, UIScrollView
normal koşullar altında sahip olacağını varsayacağınız çerçeveye sahip olmalıdır . 'Nin UIScrollView
ortasına yerleştirin ClipView
. Genişliği üst görünümünden daha azsa ClipView
's' in clipsToBounds
ayarlandığından emin olun YES
. Ayrıca, ClipView
bir başvuru gerekiyor UIScrollView
.
Son adım geçersiz kılmak için - (UIView *)hitTest:withEvent:
içeride ClipView
.
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
return [self pointInside:point withEvent:event] ? scrollView : nil;
}
Bu, temelde, dokunma alanını UIScrollView
, tam da ihtiyacınız olana, üst öğesinin görünümünün çerçevesine genişletir .
Diğer bir seçenek UIScrollView
, - (BOOL)pointInside:(CGPoint) point withEvent:(UIEvent *) event
yöntemini alt sınıfa ayırmak ve geçersiz kılmak olabilir , ancak yine de kırpmayı yapmak için bir kap görünümüne ihtiyacınız olacak ve YES
yalnızca UIScrollView
karesine bağlı olarak ne zaman döneceğinizi belirlemek zor olabilir .
NOT: Alt görünüm kullanıcı etkileşimiyle ilgili sorunlar yaşıyorsanız , Juri Pakaste'nin hitTest: withEvent: modifikasyonuna da bir göz atmalısınız.