Bir ebeveyn görünümünde userInteractionEnabled = NO, tüm alt görünümlerde kullanıcı etkileşimini önleyecektir. Bu doğru mu? Bunun etrafında bir yolu var mı?UIView - "kullanıcı etkileşimi etkin", ebeveyn üzerinde yanlış, ancak çocuk için doğru mu?
cevap
Bu doğru, üst görünümde NO olarak ayarlanmış olan userInteractionEnabled tüm alt görünümlere göre kademeli olarak artacak. Etkileşim etkinleştirmek için bazı alt görüntülemelere ihtiyacınız varsa, ancak başkalarını kullanmıyorsanız, alt görünümlerinizi iki ana görünümde ayırabilirsiniz: biri userInteractionEnabled = YES ve diğeri NO. Ardından bu iki ebeveyn görüşünü ana görünüme yerleştirin.
Teşekkürler lazycs. Benim fikrim, ilgili açılan menü türü görünümlerinin bir avuç düzenini yönetmek için şeffaf bir görünüm kullanmaktı. Ancak görünmez düzen görünümü, altındaki nesnelerle etkileşimi engelliyorsa, bu benim için işe yaramaz. Hrrmmmm .... – morgancodes
Evet, şeffaf görüş fikri bu durumda çalışmayacak. Alt görünümleri doğrudan ana görünüme ekleyebilir misiniz? – lazycs
evet yapabilirdi. Her durumda yarı saydam bir arka plan kullanmak en iyisi olabilir. Hayır biggie. – morgancodes
Sen hitTest UIView alt sınıf ve geçersiz kılabilirsiniz: withEvent: bir bakıma belirttiğiniz bir görünümde (_backView) dokunma etkinliklerinin geçmek:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView *view = [super hitTest:point withEvent:event];
if (view == self) {
view = _backView;
}
return view;
}
dokunma olayı bu görünümde o tarafından ele alınması olsaydı "_backView" e iletilir (bu, bir IBOutlet olabilir, böylece arayüz oluşturucu kullanılarak ayarlanabilir); ve eğer herhangi bir çocuk görünümü tarafından ele alınacaksa, o çocuğu ([super hitTest:point withEvent:event]
;)
sonucunu döndürdüyseniz, bu çözümü olayları iletmek için hangi görüntüye ihtiyacınız olduğunu bildiğiniz kadar iyi olur; Ayrıca mevcut UIView bir alt görünümü olmayan bir görünüm (_backView) dönen beri sorunların olup olmadığını bilmiyorum! ama benim durumumda iyi çalıştı.
Disable touches on UIView background so that buttons on lower views are clickable numaralı belgede belirtilen daha iyi bir çözüm olabilir. -pointInside:withEvent:
; Bir önceki çözümle karşılaştırıldığında, olayları almak için bir '_backView' belirtmeniz gerekmedikçe daha iyi olur (etkinlik sadece bir sonraki zincir görünümüne aktarılır)! dezavantajımız tüm alt görünümlerde -pointInside:withEvent:
'u gerçekleştirmemiz gerekebileceğidir (
Buradaki yaklaşım ve "Devre dışı bırak ..." bağlantısı için teşekkürler. açıklanan yaklaşım oldukça temiz görünüyor. –
harika bir yaklaşım :) –
hitTest çok geç ... bu en iyi cevap ... http://stackoverflow.com/questions/3427619/disable-touches-on-uiview-background-so-that-buttons-on -düşük-görünümleri-clickabl –
Sadece garip bir duruma düştüm. Bir UIBitonun alt görünümünde olan bir UIView'im var (buna V). Bu UIButton, X düğmesini arayın. Aşağıda, X düğmesinin hedefi/seçicisi için kullanacağım yöntem var. Kendim, görünümdür. X Gönderen parametresi X düğmesidir.
Bana sorun oluşturan durumdur. UI'mda başka bir tuşa dokunursam (bu durumda, bu Y düğmesini arayın) ve çok hızlı bir şekilde X düğmesine basın, burada Y eylemi görünümü V'yi devre dışı bırakır, hala dokunma olayını X düğmesine yolladım.
2014-12-19 16: 57: 53,826 BenimUygulamam [6161: 960.615] Burada
- (void) buttonAction: (UIButton *) sender { NSLog(@"superview: %d", sender.superview.userInteractionEnabled); NSLog(@"button itself: %d", sender.userInteractionEnabled); // <snip> }
çıktısı Superview: 0
2014/12/19 16: 57: 53,826 BenimUygulamam [6161: 960615] düğmesine kendisi: 1'dir
, düğme işlemin oluştuğu ve düğmenin Superview kullanıcı etkileşimi devre dışı etmişti! Ve alt görüş hala kullanıcı etkileşimi sağladı!
Bunun yapay olduğunu düşündüğünüz kişiler için, iPad'imde (iOS 8.1.2 çalıştıran), uyguladığımın UI'sinde, uygulamayı kullanmamda bir kaza oluştu. Oluşturmak için çalışıyordum aslında bir şey değildi.
Düşünceler?
Şu anki çözümüm aşağıda verilmiştir, ancak gerekli olması çok garip görünüyor!
- (void) buttonAction: (id) sender
{
NSLog(@"superview: %d", sender.superview.userInteractionEnabled);
NSLog(@"button itself: %d", sender.userInteractionEnabled);
if (! self.userInteractionEnabled) return;
// <snip>
}
Bunu "özel uyarı denetleyicim" olan bir xib ile yapıyorum.
- 1. MyBatis Ebeveyn Çocuk ilişkisi
- 2. Ebeveyn-Çocuk İşlemleri
- 3. Çocuk div pozisyonuna kaydırmak için ebeveyn div
- 4. Css vurgulu, ebeveyn ve çocuk
- 5. Tüm çocuk süreçleri için ebeveyn bekletme yap
- 6. Ebeveyn ve çocuk, Heirarchy, hql
- 7. pozisyonu kullandığımda: mutlak çocuk bloğunda ebeveyn bloğa başvurmuyor mu?
- 8. django-allauth: etkin kullanıcı için
- 9. Regex.test() doğru bir yanlış sıra veriyor mu?
- 10. CTE ebeveyn-çocuk gösteren kardeşi
- 11. SQL Veritabanı Tasarımı, öz-ebeveyn-çocuk ilişkisi?
- 12. Ebeveyn görünümünü çocuk rotasından değiştirin
- 13. Bir üst kullanıcı arayüzünün içindeki uiview boyutunun nasıl ayarlanacağı?
- 14. Elasticsearch deeper level Ebeveyn-çocuk ilişkileri (torun)
- 15. Polimer altta bağlı olay dinleyicisi ebeveyn üzerinde
- 16. Avcodec_alloc_context ancak ffmpeg bağlayıcı siparişi için tanımlanmamış başvuru doğru mu?
- 17. UIView üzerinde gradyan maskesi
- 18. Entity Framework - Etkin Olmadan Tüm Çocuk Varlıkları Sil
- 19. Umbraco: Kullanıcı Denetiminde Çocuk Düğümleri Listesi
- 20. jsdom - document.querySelector etkin, ancak
- 21. Linq - çocuk nesne üzerinde hüküm
- 22. mysql özyinelemeli (ağaç) ebeveyn çocuk kategorisi
- 23. UITextField kopyalanabilir ancak düzenlenemez Swift
- 24. Ebeveyn formu ve Loop C'de Çocuk formu #
- 25. Sorgu döndürme doğru/yanlış
- 26. OpenJPA Ebeveyn silme işlemi sırasında çocuğun silinmesi için yanlış ayar
- 27. Çocuk kapsamı, ebeveyn uygulanmadan geçerli olabilir
- 28. ebeveyn nasıl görünmeyecek | belge başlığında çocuk rotaları
- 29. Ebeveyn DataFrame'e atama, çocuk DataFrame'i etkiler mi?
- 30. Ebeveyn div genişliğini doldurmak için çocuk divs genişletin
Evet, durum böyle, ve bu, iOS'ta pek çok şey gibi tamamen aptalca, Apple'ın basit API'lerin yapıldığı günler nerede? Sanırım neredeyse 20 yıl önceydi, şimdi API'ler filozoflar tarafından yazılıyor. –
. . . meşgul olmadıklarında yığın taşması yorumları yazıyorlar. – tooluser
olası yinelemesi [Ebeveyn görünümünde userInteractionEnabled öğesi iOS'ta NO olarak ayarlandığında nasıl dokunulur?] (Http://stackoverflow.com/questions/4661589/how-to-get-touches-when-parent-view-has-userinteractionenabled -set-to-no-in-ios) – DBD