SORU
15 HAZİRAN 2010, Salı


Ne kadar şeffaf bir UİView arkasında bir düğme miyim?

Hadi bir görünüm alt Görünüm ile kumanda. bu küme her tarafta 100 px kenar boşlukları ile ekranın ortasına kadar sürer. Biz o zaman bu küme içinde tıklatın için küçük bir şeyler ekleyin. Sadece küme yeni bir kare ( x=0,=0 y içinde küme aslında ana görünüm 100,100) yararlanmak için kullanıyoruz.

Daha sonra, küme, Bir menü gibi arkasında bir şey olduğunu hayal edin. İstediğim kullanıcı seçim yapabilme, herhangi bir "küçük şeyler" küme, ama eğer orada hiçbir şey yok, istiyorum dokunur geçmesine (beri arka planda açık zaten) düğmeleri arkasında.

Bunu nasıl yapabilirim? TouchesBegan geçer gibi görünüyor, ama çalışmıyor zaten.

CEVAP
24 EKİM 2010, Pazar


Konteyner için özel bir görünüm oluşturmak ve pointİnside geçersiz: nokta çocuk uygun bir görünüm içinde değil, HAYIR, bu gibi dönüş mesajı:

@interface PassthroughView : UIView
@end

@implementation PassthroughView
-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
    for (UIView *view in self.subviews) {
        if (!view.hidden && view.alpha > 0 && view.userInteractionEnabled && [view pointInside:[self convertPoint:point toView:view] withEvent:event])
            return YES;
    }
    return NO;
}
@end

Bir kap olarak kullanarak, çocuklarını herhangi dokunur ama olaylar için şeffaf olacak görünüm almak için izin verir.

Edit: Burada Hızlı sürümü

class PassThroughView: UIView {
    override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool {
        for subview in subviews as [UIView] {
            if !subview.hidden && subview.alpha > 0 && subview.userInteractionEnabled && subview.pointInside(convertPoint(point, toView: subview), withEvent: event) {
                return true
            }
        }
        return false
    }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • HSmasteryoda .

    HSmasteryoda

    22 Ocak 2010
  • Microsoft Research

    Microsoft Re

    24 EKİM 2008
  • o0oCyrusViruso0o

    o0oCyrusViru

    11 Mart 2008