Мне нужна серьезная помощь.Я создаю приложение для клавиатуры в задаче c, и одна из функций, которые я имею, состоит в том, чтобы перетаскивать кнопки клавиатуры вокруг экрана клавиатуры, чтобы пользователь мог разместить их в любом месте.Но моя проблема в том, что я не могу понять, как сохранить положение каждой кнопки после перетаскивания, чтобы при выключении и включении всех кнопок клавиатуры находились в том же месте, где они были расположены ранее.
Мой код, как показано ниже:
Это на мой взглядDidLoad:
for (UIButton *button in self.allButtonsArray) {
UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc]
initWithTarget:self
action:@selector(handlePanGestureButtons:)];
[button addGestureRecognizer:panGestureRecognizer];
}
Метод обработки панорамирования:
(void) handlePanGestureButtons:(UIPanGestureRecognizer *)gesture {
NSString *_valueOfDragging= [defaults stringForKey:@"stateOfSwitchButtonDragging"];
if([_valueOfDragging compare:@"ON"] == NSOrderedSame){
if (gesture.state==UIGestureRecognizerStateChanged || gesture.state == UIGestureRecognizerStateEnded){
UIView *superview = gesture.view.superview;
CGSize superviewSize = superview.bounds.size;
CGSize thisSize = gesture.view.frame.size;
CGPoint translation = [gesture translationInView:self.view];
CGPoint center = CGPointMake(gesture.view.center.x + translation.x,
gesture.view.center.y + translation.y);
CGPoint resetTranslation = CGPointMake(translation.x, translation.y);
if(center.x - thisSize.width/2 < 0)
center.x = thisSize.width/2;
else if (center.x + thisSize.width/2 > superviewSize.width)
center.x = superviewSize.width-thisSize.width/2;
else
resetTranslation.x = 0;
if(center.y - thisSize.height/2 < 0)
center.y = thisSize.height/2;
else if(center.y + thisSize.height/2 > superviewSize.height)
center.y = superviewSize.height-thisSize.height/2;
else
resetTranslation.y = 0; //Only reset the vertical translation if the view *did* translate vertically
gesture.view.center = center;
[gesture setTranslation:CGPointMake(0, 0) inView:self.view];
}
}