लौटाता है मेरे पास एक दृश्य पदानुक्रम है जिसमें स्क्रॉल व्यू पर छोटे दृश्य होते हैं। प्रत्येक दृश्य में बटन आदि जैसे सबव्यूव हो सकते हैंहिटटेस्ट गलत UIView
किसी कारण से, दृश्य पर बटन क्लिक नहीं किए जाते हैं; आगे की खोज से पता चला कि स्क्रॉल व्यू को टचबिगन घटना प्राप्त होती है, लेकिन बटन नहीं होता है। हिटटेस्ट को कॉल करना: ईवेंट: संदेश दिखाता है कि बटन वापस नहीं किया गया है, भले ही यह सीमाओं के भीतर है।
मैंने स्क्रॉल व्यू पर स्पर्श के स्थान का वर्णन करने वाला लॉग आउटपुट शामिल किया है, हिटटेस्ट से लौटाया गया आइटम, स्पर्श स्थान जहां मैंने स्थान इनव्यू कहा है: अपेक्षित आइटम का उपयोग करके, और अपेक्षित आइटम का पदानुक्रम (मुद्रित फ्रेम के साथ))। इस उत्पादन से मैं मान सकते हैं कि बटन बुलाया गया है चाहिए ...
किसी को भी इस व्याख्या कर सकते हैं? क्या मैं कुछ भूल रहा हूँ?
touched ({451, 309}) on <VCViewContainersView: 0x4b31ee0; frame = (0 0; 748 1024); transform = [0, 1, -1, 0, 0, 0]; autoresize = W+H; layer = <CALayer: 0x4b32130>> (location in expected item: {17, 7.5})
expected touched item is:
view: <UIButtonLabel: 0x482b920; frame = (32 5; 36 19); text = 'Click'; clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x4831370>>, layer transform: [1, 0, 0, 1, 0, 0]
view: <UIRoundedRectButton: 0x482c100; frame = (50 50; 100 30); opaque = NO; layer = <CALayer: 0x482c450>>, layer transform: [1, 0, 0, 1, 0, 0]
view: <UIImageView: 0x480f290; frame = (0 0; 320 255); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x480e840>>, layer transform: [1, 0, 0, 1, 0, 0]
view: <VCViewContainer: 0x4b333c0; frame = (352 246.5; 320 471.75); layer = <CALayer: 0x4b33d50>>, layer transform: [1, 0, 0, 1, 0, 0]
view: <UIScrollView: 0x4b32600; frame = (0 0; 1024 748); clipsToBounds = YES; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x4b32780>>, layer transform: [1, 0, 0, 1, 0, 0]
view: <VCViewsContainerView: 0x4b31ee0; frame = (0 0; 748 1024); transform = [0, 1, -1, 0, 0, 0]; autoresize = W+H; layer = <CALayer: 0x4b32130>>, layer transform: [0, 1, -1, 0, 0, 0]
view: <UIWindow: 0x4b1d590; frame = (0 0; 768 1024); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x4b1d6d0>>, layer transform: [1, 0, 0, 1, 0, 0]
अद्यतन: UIWindow और VCViewsContainerView अलावा, सभी दृश्यों को प्रोग्राम के बनाई गई हैं initWithFrame का उपयोग कर: या बटन, buttonWithType के मामले में:। VCViewContainer को CGRectZero का उपयोग करके प्रारंभ किया गया है और जब UIImageView बनाया गया है, तो इसका फ्रेम छवि के आकार + उसके नीचे के लेबल के लिए अतिरिक्त स्थान पर सेट किया गया है।
अद्यतन 2: जब [hitTest self.layer: स्थान] बुला एक ही स्थान के साथ, मैं सही देखने की परत प्राप्त करें! यहाँ क्या चल रहा है...?
UIRoundedRectButton * * बटन है। – kennytm
हम देखना चाहते हैं कि आप अपने दृश्य पदानुक्रम ... InterfaceBuilder, कोड, बनाने की जरूरत है आदि ... – jv42
@KennyTM: अगर यह स्पष्ट नहीं था, यह कहते हैं, "छुआ (स्थान) पर (वास्तव में छुआ आइटम)"। ध्यान दें कि छुआ आइटम VCViewContainerView और _not_ UIRoundedRectButton है। –