Как сохранить перетаскиваемый объект внутри рамки вида - PullRequest
0 голосов
/ 10 октября 2011

У меня есть кнопка, которую можно перетаскивать на экране. Мне было интересно, есть ли способ удерживать кнопку внутри рамки вида.

Я использовал этот код, чтобы сделать возможным перетаскивание кнопки:

UIPanGestureRecognizer *buttonPanRecognizer;
buttonPanRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(setObjectLocation:)];
[NewButton addGestureRecognizer:buttonPanRecognizer];

- (void)setObjectLocation:(UIPanGestureRecognizer *)recognizer {

CGPoint location = [recognizer locationInView:self.view];

if (CGRectContainsPoint([NewButton frame], location)) {              // NewButton
    NewButton.center = location;
} 
else if (CGRectContainsPoint([NewLabel frame], location)) {          // NewLabel
    NewLabel.center = location;
} }

Я также хочу иметь возможность хранить внутри другие объекты.

Заранее спасибо:)

enter image description here

Проблема в том, что есть возможность перетаскивать части кнопки UIB за пределы экрана.

Ответы [ 2 ]

1 голос
/ 12 октября 2011

Я должен согласиться, что ваша проблема не совсем ясна.Что это за штука с лейблом?Как правило, чтобы держать кнопку внутри рамки, у вас уже есть все, что вам нужно:

UIPanGestureRecognizer* buttonPanRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(setObjectLocation:)];
[NewButton addGestureRecognizer:buttonPanRecognizer];

- (void)setObjectLocation:(UIPanGestureRecognizer *)recognizer {

    CGPoint location = [recognizer translationInView:self.view];

    if (CGRectContainsPoint(self.view.frame, location)) {
       NewButton.center = location;
    } 
}
0 голосов
/ 10 октября 2011

В чем проблема? Просто сохраните источник кнопки в прямоугольнике (frame.x, frame.y, frame.width - button.width, frame.height - button.height).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...