मैं एक ओवरले बना रहा हूं जिसमें स्क्रीन पर सभी प्रदर्शित दृश्य शामिल होंगे। यह ओवरले हमेशा rootViewController
परिवर्तन, धक्का देने या प्रस्तुत करने के मामले में भी प्रकट होता है।एक ओवरले के साथ UIAppDelegate की विंडो को कवर करने से उपयोगकर्ता UIActivityViewController के एक्सटेंशन को स्पर्श नहीं कर सकता है जब यह प्रदर्शित होता है
मेरा विचार
CustomWindow
जोUIWindow
का एक उपवर्ग है बनाएं है। इसके बाद के साथUIApplication
के डिफ़ॉल्टwindow
को प्रतिस्थापित करने के बाद, मेरी नई विंडो के लिए एक नयाrootViewController
बनाएं।CustomWindow
में, मेरे पासoverlay
है (UIView
है)।Overlay
में अल्फा के साथ हल्के भूरे रंग का रंग है औरoverlay
पर प्रत्येक ईवेंट नीचे देखने के लिए पारित किया जाएगा।- जब भी
CustomWindow
एक नया सबव्यू जोड़ें, तो मैं आगेoverlay
लाऊंगा। यह सुनिश्चित करता है कि हर मामले मेंoverlay
शीर्ष पर होगा।
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
सब कुछ, यहां तक कि जब धक्का पेश या rootViewController
बदलते हर मामले में ठीक काम करता है।
समस्या
लेकिन जब मैं एक UIActivityViewController
दिखाने के लिए, मैं किसी भी एक्सटेंशन जो UIActivityViewController
पर प्रदर्शित किए जाते हैं पर क्लिक नहीं कर सकते हैं।
जादुई ढंग से
जब मैं
UIActivityViewController
के बाहर क्लिक करें याCancel Button
पर क्लिक करें,UIActivityViewController
सामान्य रूप से खारिज कर दिया है।यदि मैं
overlay
सेclearColor
का रंग बदलता हूं, तो यह भी ठीक काम करता है।
मेरा प्रश्न
जब मैं खिड़की पर
overlay
है औरoverlay
एक रंग है कैसे मैं एक्सटेंशन पर छू सकता है?यदि मैं नहीं कर सकता, तो क्या कोई मुझे बता सकता है कि ऐसा क्यों होता है? यह सही है जब आप दस्तावेज़ से कारण उद्धृत कर सकते हैं।
मैं बहुत यकीन है कि यह मैं कैसे UIActivityViewController
प्रारंभ या जिस तरह से मैं UIActivityViewController
दिखाने के लिए संबंधित नहीं है हूँ।
अधिक जानकारी और आसान के लिए, मैंने यहां debug repo बनाया है। यदि आप चाहें तो इसे डिबग करने के लिए आप इसे देख सकते हैं।
अधिक
मैं एक problem काफी Android
पर इस समस्या के समान पाया। लेकिन मुझे यकीन नहीं है क्योंकि मैंने ऐप्पल से इसके बारे में कोई आधिकारिक दस्तावेज नहीं देखा है। एक और बात यह है कि clearColor
पर रंग बदलने पर स्पर्श प्रभावित हो सकता है। तो वास्तव में, मुझे नहीं लगता कि वे वही हैं।
मैं अपने कोड का परीक्षण करने के लिए अपने मैक पर नहीं हूं लेकिन अभी एक विचार मिला है। क्या आपने setOpaque विधि को आजमाया है? –
@ToughGuy आपके सुझाव के लिए धन्यवाद लेकिन 'SetOpaque' इस मामले में मेरी सहायता नहीं करता है। धीरे-धीरे, जब आप मेरे कोड का परीक्षण कर सकते हैं, तो मैं आपसे एक और प्रश्न का इंतजार कर सकता हूं। – trungduc
मैंने ग्रे बॉक्स को ऊंचाई में छोटे बनाने की कोशिश की ताकि बटन आधे दिखाई दे सकें। गतिविधि दृश्य कंट्रोलर के अलावा किसी भी दृश्य को मूल रूप से स्पर्श करना एक प्रतिक्रियाकर्ता घटना देता है। –