/ / TouchesMoved केवल थोड़ा-सा चलता है - ios, xcode, drag, touchesbegan, touchesmoved

TouchesMoved केवल थोड़ा-सा चलता है - ios, xcode, drag, touchesbegan, touchesmoved

मैं उपयोगकर्ता को एक लेबल खींचने की अनुमति देने की कोशिश कर रहा हूंस्क्रीन के चारों ओर, लेकिन सिम्युलेटर में यह केवल हर बार थोड़ा-थोड़ा चलता है जब मैं स्क्रीन पर कहीं छूता हूं। यह स्थान पर कूद जाएगा और फिर थोड़ा खींचें, लेकिन फिर यह खींचना बंद कर देगा और मुझे इसे फिर से स्थानांतरित करने के लिए एक अलग स्थान को स्पर्श करना होगा। यहाँ मेरी .m फाइल में मेरा कोड है।

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *Drag = [[event allTouches] anyObject];

firstInitial.center = [Drag locationInView: self.view];

}

मेरा अंतिम लक्ष्य स्क्रीन पर तीन अलग-अलग लेबल खींचने में सक्षम होना है, लेकिन मैं सिर्फ इस समस्या से निपटने की कोशिश कर रहा हूं। मैं किसी भी मदद की बहुत सराहना करता हूं।

धन्यवाद।

उत्तर:

उत्तर № 1 के लिए 1

एक का उपयोग करने का प्रयास करें UIGestureRecognizer के बजाय -touchesMoved:withEvent:। और निम्नलिखित कोड के समान कुछ लागू करना।

//Inside viewDidLoad
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(dragonMoved:)];
panGesture.minimumNumberOfTouches = 1;
[self addGestureRecognizer:panGesture];
//**********

- (void)dragonMoved:(UIPanGestureRecognizer *)gesture{

CGPoint touchLocation = [gesture locationInView:self];
static UIView *currentDragObject;

if(UIGestureRecognizerStateBegan == gesture.state){

for(DragObect *dragView in self.dragObjects){

if(CGRectContainsPoint(dragView.frame, touchLocation)){

currentDragObject = dragView;
break;
}
}


}else if(UIGestureRecognizerStateChanged == gesture.state){

currentDragObject.center = touchLocation;

}else if (UIGestureRecognizerStateEnded == gesture.state){

currentDragObject = nil;

}

}