allowableMovement
मेरे UILongPressGestureRecognizer
में संपत्ति को अनदेखा किया जा रहा है। मैंने सिंगल व्यू एप्लिकेशन टेम्पलेट का उपयोग करके एक नई परियोजना (एक्सकोड 4.5.1, आईओएस 6) बनाई और दृश्य में एक लांग प्रेस जेस्चर रिकॉग्नाइज़र जोड़ा। एक आउटलेट वायर्ड और एक एक्शन है। यहाँ कार्रवाई विधि के लिए कोड है:स्वीकार्य प्रतीत होता है
- (IBAction)longPress:(UILongPressGestureRecognizer *)sender
{
if (sender.state == UIGestureRecognizerStatePossible) NSLog(@"possible");
if (sender.state == UIGestureRecognizerStateBegan) NSLog(@"began");
if (sender.state == UIGestureRecognizerStateChanged) NSLog(@"changed");
if (sender.state == UIGestureRecognizerStateRecognized) NSLog(@"recognized");
if (sender.state == UIGestureRecognizerStateCancelled) NSLog(@"cancelled");
if (sender.state == UIGestureRecognizerStateFailed) NSLog(@"failed");
CGPoint locationInView = [sender locationInView:self.view];
NSLog(@"long press: allowableMovement= %f, x= %f, y= %f", sender.allowableMovement, locationInView.x, locationInView.y);
}
अगर मैं काफी लंबे समय प्रेस और जाना मैं लॉग में इस मिलता है:
2012-10-30 20:24:41.449 Long Press[1078:907] began
2012-10-30 20:24:41.455 Long Press[1078:907] long press: allowableMovement= 10.000000, x= 210.500000, y= 99.500000
2012-10-30 20:24:42.880 Long Press[1078:907] recognized
2012-10-30 20:24:42.882 Long Press[1078:907] long press: allowableMovement= 10.000000, x= 208.500000, y= 96.000000
यह मैं क्या उम्मीद करेंगे है।
कोई फर्क नहीं पड़ता कि मैंने allowableMovement
(सकारात्मक, नकारात्मक, बड़ा, छोटा) सेट किया है, एक बार राज्य UIGestureRecognizerStateBegan
है, मैं अपनी स्क्रीन को पूरी स्क्रीन पर खींच सकता हूं। राज्य UIGestureRecognizerStateChanged
में बदलता है और अक्सर अपडेट और स्थान होते हैं इनव्यू सटीक रूप से ट्रैक करना जारी रखता है। जब मैं जाने देता हूं तो मुझे UIGestureRecognizerStateRecognized
राज्य और लॉग के लिए अंतिम आउटपुट मिलता है।
कक्षा संदर्भ कहता है कि यदि आंदोलन allowableMovement
से अधिक हो तो पहचानकर्ता विफल होना चाहिए। allowableMovement
संपत्ति को अनदेखा क्यों किया जाता है?
@ मुरे सगल: इससे मेरा भ्रम भी हल हो गया। आश्चर्य कीजिए, अगर यह पता लगाने का कोई तरीका है कि क्या LongPressGesture शुरू होने के बाद उपयोगकर्ता अपनी अंगुली को दृश्य से बाहर खींचता है। – Kashif
@TPos मुझे लगता है कि आप 'locationInView:' या इस तरह के तरीकों में से एक का उपयोग कर सकते हैं। लेकिन ऐसा लगता है कि यह अपने स्वयं के प्रश्न के योग्य होगा। –