Ekranda görüntülenen tüm görünümleri kapsayacak bir bindirme oluşturuyorum. Bu bindirme hep iterek veya sunulması, hatta dava rootViewController
değişikliklere görünür.UIAppDelegate öğesinin bir kaplama ile kapsanması penceresi, kullanıcı görüntülendiğinde UIActivityViewController uzantısına dokunamadığında
Benim fikrim
UIWindow
bir alt sınıfıdırCustomWindow
oluştur olduğunu. Bundan sonraCustomWindow
numaralıUIApplication
numaralıwindow
'un yerine yeni pencerem için yeni birrootViewController
oluşturun.CustomWindow
'da, biroverlay
(birUIView
) var.Overlay
görünümünün altında geçmesine edilecek alfa veoverlay
her olay açık gri bir renge sahiptir.CustomWindow
yeni bir alt görünüm eklediğinde, ön tarafaoverlay
getireceğim. Buoverlay
her durumda en üstte yer alacağından emin olun bu. sunulması veyarootViewController
değişen iterek bile
CustomWindow
@implementation CustomWindow
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
_overlay = [[UIView alloc] initWithFrame:self.bounds];
_overlay.userInteractionEnabled = NO;
_overlay.backgroundColor = [UIColor lightGrayColor];
_overlay.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self addSubview:_overlay];
}
return self;
}
- (void)didAddSubview:(UIView *)subview {
[super didAddSubview:subview];
[self bringSubviewToFront:_overlay];
}
@end
Her şey her durumda çalışıyor.
Sorun
Ama bir UIActivityViewController
gösterdiğinde, ben UIActivityViewController
görüntülenir uzantılarla tıklayın olamaz.
Sihirli
i dışarıda
UIActivityViewController
ait tıklayın yaCancel Button
tıklayın,UIActivityViewController
normalde reddedilmiştir.overlay
'un renginiclearColor
olarak değiştirirseniz, bu da iyi çalışır.
Sorum i penceresinde overlay
varsa ve overlay
bir renge sahip olduğunda ben uzantılarını dokunabilir nasıl
mı?
Yapamam, kimse bunun neden olduğunu söyleyebilir mi? Bir belgenin nedenini belirtebileceğiniz zaman mükemmel.
bu i UIActivityViewController
başlatmak veya yolu i UIActivityViewController
gösterdiğine ilgili değildir eminim.
Daha fazla ayrıntı ve daha kolay için, burada bir debug repo oluşturdum. İsterseniz hata ayıklamak için kontrol edebilirsiniz.
DAHA ben Android
bu soruna bir problem oldukça benzer bulundu. Ama emin değilim çünkü Apple'dan herhangi bir resmi belge görmedim. Bir şey daha, rengi clearColor
'a değiştirirken dokunmayı etkileyebilir. Yani aslında, aynı olduklarını sanmıyorum.
Kodumu sınamak için benim Mac'umda değilim ama sadece bir fikrim var. SetOpaque yöntemini denediniz mi? –
@ToughGuy Öneriniz için teşekkürler, ancak setOpaque bu durumda bana yardımcı olmaz. Yavaşça, kodumu test edebileceğiniz zaman sizden başka bir soru bekleyebilirim. – trungduc
Gri Kutuyu küçültmek için düğmelerin yarı görünür olmasını sağlamaya çalıştım. Temel olarak ActivityViewController dışındaki herhangi bir görünüme dokunmak, bir yanıtlayıcı olayı verir. –