Я практически новичок в Objective C и iOS Dev, и мне нужно создать приложение, которое записывает "маршрут" или "путь" (например, приложение защиты от блокировки точек).Поэтому я подумал о кнопках, которые нажимаются при перетаскивании, включая всех прямых соседей (справа, слева, вверх, вниз).Я начал кодировать, но я не знаю, в правильном ли я направлении и Как я могу реализовать перетаскивание, чтобы пользователю не приходилось нажимать каждую кнопку, а просто отслеживать путь пальцем
viewController.m
(void) viewDidLoad
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
for (int y=0; y < 9; y++) {
for (int x = 0; x < 9; x++) {
UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(20 + 30 * x, 20 + 30 * y, 30, 30);
unsigned buttonNumber = y * 9 + x + 1;
button.tag = buttonNumber;
button.backgroundColor = [UIColor blackColor];
[button setTitle:[NSString stringWithFormat:@"%u", buttonNumber] forState:UIControlStateNormal];
[button setTitle:[NSString stringWithFormat:@"!"] forState:UIControlStateHighlighted];
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:(UIControlEventTouchUpInside)];
[self.view addSubview: button];
}
}
Этот код (адаптированный из моего другого поста Хорхе) генерирует сетку кнопок 9x9 с уникальным тегом.
И соответствующий метод действия,
(void) buttonPressed: (UIButton *) button
if(first){
for (int y=0; y < 9; y++) {
for (int x = 0; x < 9; x++) {
unsigned buttonNumber = y * 9 + x + 1;
UIButton *auxButton = (UIButton *)[self.view viewWithTag:buttonNumber];
if ((auxButton.tag != (button.tag + 1)) || (auxButton.tag != (button.tag - 1)) || (buttonNumber != (button.tag + 9)) || (buttonNumber != (button.tag - 9)) || (buttonNumber != button.tag )){
auxButton.enabled = FALSE;
}
}
}else{
//not implemented yet
}
То, что я здесь сделал, было: изначально все кнопки были включены, но когдапри нажатии первой она отключит все кнопки, кроме прямых соседей (l, r, u, d).
My if (условие) не работает с условиями ИЛИ (||), поэтому всекнопки отключены, но если я использую только одно условие, скажем, если (auxButton.tag! = button.tag + 1), оно работает.
Что здесь может быть не так?Как я могу сделать так, чтобы путь, пройденный касанием, нажимал все кнопки, по которым он проходил?
Заранее спасибо!