2012-01-14 13 views
5

मैं समझता हूं कि this response स्पष्ट रूप से बताता है कि निजी फ़ंक्शन कॉल के बिना यह संभव नहीं है। इसलिए, ऐप्पल के नियमों के अनुसार, इस दृष्टिकोण का उपयोग ऐप स्टोर ऐप पर नहीं किया जा सकता है।आईओएस में टच साइज कैसे प्राप्त करें?

  • Penultimate वास्तविक हथेली अस्वीकृति के लिए जो वे "TrueVelocity फोन दबाव संवेदनशीलता, के लिए नोट में की तरह एक पूर्वनिर्धारित अस्वीकृति क्षेत्र के बिना लेने वाला HD
  • गुणी:

    हालांकि, कुछ क्षुधा पहले से ही इस समारोह कॉल का उपयोग करने लगते हैं 2 "

  • GarageBand भी दबाव संवेदनशीलता

जाहिर है, इस दृष्टिकोण पहले से ही व्यापक रूप से App स्टोर में प्रयोग किया जाता है के लिए despi एप्लिकेशन ऐप्पल के प्रतिबंध।

tl; dr स्पर्श आकार प्राप्त करने के लिए आईओएस पर निजी फ़ंक्शन कॉल क्या है?

+1

GarageBand परीक्षण स्पर्श वेग के लिए accelerometer का उपयोग करता है - कि अंत पर अपनी धारणा गलत है। – Till

उत्तर

5

आकार और दबाव दो अलग-अलग जानवर हैं। एक निश्चित क्षेत्र में बड़ी मात्रा में छूने के लिए अंतिम संभावित परीक्षण (हथेलियों के बाद एक बड़ा क्षेत्र होता है, स्पर्शों के बहुत सारे उत्पन्न होते हैं)।

स्पर्श करें "आकार" मौजूद नहीं है। आईओएस टच इवेंट उत्पन्न होते हैं जब एक उंगली स्क्रीन से संपर्क करती है। ओएस तब स्पर्श से एक केंद्र बिंदु लेता है और यही आपको मिलता है। यह एक सीजीआरईटी नहीं है, यह एक CGPoint है।

हालांकि दबाव 'आसान' है। यहाँ एक समाधान के लिए देखें: Tap pressure strength detection using accelerometer

और जब मैं देख रहा हूँ आप निजी एपीआई के लिए बाजार में कर रहे हैं, GitHub होस्ट करता है वर्ग के एक नंबर उदासीनता: http://github.com/kennytm/iphone-private-frameworks और https://github.com/nst/iOS-Runtime-Headers

+0

बहुत बुरा उनके पास नहीं है। एम –

+0

मुझे पता है कि यह एक पुराना सवाल है, लेकिन ऐसा लगता है कि समय बदल गया है। पीटर कम्फ के जवाब देखें। – SwiftsNamesake

5

आप निजी रूप से रुचि रखते हैं (यानी , app की दुकान विधि को यह सबमिट नहीं करते, आप देख रहे हैं -

@interface UITouch (Private) 
-(float)_pathMajorRadius; 
@end 

इस की मेरी (! निजी) उपयोग में, 10 का निर्धारण जब एक व्यक्ति अपने उंगली का उपयोग किया गया था के लिए एक अच्छा सीमा था/स्टाइलस या डिवाइस पर अपना हाथ आराम कर रहे हैं।

आशा है कि यह किसी के लिए सहायक होगा। दोबारा, ऐप स्टोर में इसका उपयोग न करें।

12

iOS8 के साथ, आप touch.majorRadius संपत्ति है, जो एक CGFloat है, 10.45 के गुणकों में बढ़ता है और मिलीमीटर में छुआ क्षेत्र की त्रिज्या के लिए आनुपातिक है पहुँच सकते हैं। touch.majorRadiusTolerance दूसरी संपत्ति है जिसका उपयोग आईओएस 8 के साथ किया जा सकता है और टच त्रिज्या की जानकारी की सटीकता देता है। मेरे माप में यह हमेशा majorRadius चरण आकार का आधा था।

आईपैड प्रो पर टचस्क्रीन तीन गुना अधिक संवेदनशील है और ऐप्पल पेंसिल से कमजोर सिग्नल उठाता है जो पुराने आईपैड मॉडल पर रिपोर्टिंग थ्रेसहोल्ड से नीचे है। पेंसिल का टच त्रिज्या 0.25 के रूप में रिपोर्ट किया गया है, जबकि थोड़ी सी उंगली संपर्क भी 20.84 या उससे अधिक के रूप में रिपोर्ट करेगा।

अपने UIView विधि के भीतर इस तरह यह प्रयोग करें:

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

// Regular multitouch handling. 
    [super touchesBegan:touches withEvent:event]; 

    CGPoint center = [touch locationInView:self]; 
    NSLog(@"Touch detected at %6.1f | %6.1f", center.x, center.y); 
    CGFloat radius = [touch majorRadius]; 
    NSLog(@"Radius = %5.1f; lower limit = %5.1f; upper limit = %5.1f", radius, radius-touch.majorRadiusTolerance, radius+touch.majorRadiusTolerance); 
} 
+0

यह वास्तव में इस बिंदु पर स्वीकार्य उत्तर होना चाहिए ... – SwiftsNamesake

संबंधित मुद्दे