2011-08-07 14 views
10

UIScrollView 'un sayfalama özelliği var ve clipToBounds = NO numaralı telefonu ayarlayarak mevcut sayfanın dışını görebiliyorum.iOS geliştirin. UIScrollView'ın kaydırma etkinliği yanıtlama alanı nasıl genişletilir?

İstediğim, kullanıcının yalnızca geçerli sayfanın değil, tüm görünür alanı üzerinde UIScrollView öğesini kaydırmasını sağlamak.

Bunu nasıl uygulayabilirim?

Teşekkürler.

P.S. Apple'ın belgelerine göre (http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIScrollView_Class/Reference/UIScrollView.html), pagingEnabled özelliğinin değeri YES ise, kaydırma görünümü durur. Kullanıcı kaydırdığında, kaydırma görünümünün katları.

Bu, sayfalama işlevinden ödün vermeden istediğimi almak için UIScrollView'u yeniden boyutlandıramam anlamına geliyor, değil mi?

cevap

12

geçersiz bir UIView içine scrollview koyun ve Scrollview ait clipsToBounds devre dışı bırakmayı deneyin

emin değilim. scrollview, sayfalama için istediğiniz boyut olmalıdır. İçeriği kaydırma görünümünün dışında göreceksiniz, ancak sayfalama hala aynı olacaktır. Kaydırma görünümünün boyutunu sınırlamak için dış görünüm için clipsToBounce'u etkinleştirebilirsiniz.

Dokunma noktalarını kaydırma görünümüne yönlendirmek için görünümün hitTest üzerine yazdığınızda, kaydırma görünümünün dışına dokunarak da kaydırma yapabilirsiniz.

+0

Cevabınızı kullanarak, sorunumu düzeltmeyi başarabildim ve süreçte, istediğim zaman bu davranışı otomatikleştirmek için bu basit sınıfı bitirdim. Bir çerçevenin çerçevesini değiştirmeden bir görünümün dokunma alanını genişletmeye ihtiyaç duyduğumda, onu daha geniş bir çerçeveye sahip bir görünümle sardım ve bu sınıfın yazdıklarına bu sınıfın görünümünü ayarladım, daha fazla ince ayar yapmadan çalışır. https://gist.github.com/diegoperini/8dfa345fca7c733c411dbec6e93729b0 – diegoperini

7

Neden scrollView'unuzu yeniden boyutlandırmıyorsunuz, böylece ihtiyacınız olan alana sığacak mı? o yardım edeceğiz eğer, ancak UIScrollView pointInside yöntemini

- (BOOL) pointInside:(CGPoint)point withEvent:(UIEvent *)event { 
    CGRect newBounds = self.bounds; 
    newBounds = CGRectInset(bounds, 0, -100.0f); 
    return CGRectContainsPoint(newBounds, point); 
} 
+0

Anlayışım, UIScrollView'ın çağrıyı hesaplamak için boyutunu kullanacağıdır; bu şekilde yeniden boyutlandırılması, sayfalama işlevinden ödün vermeyecektir. Yine de teşekkürler. – AKFish

+0

İçerikSize'yi buna göre artırabilir ve alt görünümler konumlarını düzeltebilirsiniz. –

+0

Zaten denedi. Ve contentSize hakkını almak çağrı için çok önemlidir. Test sonucum, UIScrollView'un yalnızca çerçevesinin sınırlayıcı alanı içindeki dokunma olaylarına yanıt vermesi ve contentSize'in bu konu üzerinde hiçbir etkisinin olmaması. – AKFish

İlgili konular