2016-10-26 6 views
5

मेरे पास एक कस्टम UIButton है और मैंने कस्टम बटन क्लास में प्रतिनिधि को स्पर्श किया है।स्पर्श आईफोन 6 एस के साथ सिंगल टैप पर और आगे

आईफोन 6 प्लस तक हर चीज ठीक काम कर रही है। आईफोन 6 एस और 7 जैसे उपरोक्त सभी डिवाइस एक समस्या पैदा कर रहे हैं।

जब मैं एक बटन को टैप करता हूं touchesBegan को अपेक्षित कहा जाता है लेकिन touchesMoved भी कहा जा रहा है और यह मेरे कोड में समस्याएं पैदा करता है।

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    _firstTouch = [[touches anyObject]locationInView:self]; 
    _isTapped = YES; 

    [self.nextResponder.nextResponder touchesBegan:touches withEvent:event]; 
} 

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ 
    _isTapped = NO; 

    [self.nextResponder.nextResponder touchesMoved:touches withEvent:event]; 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 
if (_isTapped){ 
    //Functionality 
} 

क्यों touchesMoved उन उपकरणों पर कहा जाता है और मैं इसे कैसे हल कर सकते हैं?

उत्तर

5

हो सकता है कि उच्च संकल्प स्क्रीन किसी भी आंदोलन के प्रति संवेदनशील हैं। जब आप टैप कर रहे हों, तो आप वास्तव में अपनी उंगली को एक छोटे से कदम की तरह लगने के लिए पर्याप्त रूप से घुमा सकते हैं।

दो संभव समाधान।

  1. जांचें कि touchesMoved: विधि में स्पर्श कितना दूर चला गया है। यदि यह एक वास्तव में छोटे कदम है, अपने _isTapped जांच के प्रयोजनों के लिए इसे अनदेखा।
  2. touches... विधियों को ओवरराइड करने के बजाय, UITapGestureRecognizer का उपयोग करें। यह निर्धारित करने के लिए कड़ी मेहनत करें कि टैप क्या है और क्या नहीं है। यह आपके कोड को बहुत आसान बना देगा।
+0

मैंने ध्यान से जांच की कि क्या मैं अपना स्पर्श नहीं चला रहा हूं। पुराने उपकरणों में कोई मुद्दा नहीं है लेकिन यहां अतिरिक्त प्रतिनिधि है। TapRecognizer शायद इस समस्या को हल करेगा लेकिन किसी भी विचार को स्पर्श प्रतिनिधियों का उपयोग करके हल किया जा सकता है? – Hassy

+1

हां जैसा कि मैंने पहले ही अपने उत्तर में उल्लेख किया है। बिंदु # 1 फिर से देखें। – rmaddy

+0

THX इसके साथ # 1 अंक यू उल्लेख किया काम – Hassy

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