Я хочу отключить касания во всех областях экрана отдельно от определенных нескольких точек (например, кнопок). То есть Я не хочу, чтобы «touchhesBegan» запускался вообще, когда я нажимал ничего, кроме кнопки. ВызовОтключить события касания на определенных участках экрана iPhone
self.view.userInteractionEnabled = NO;
имеет желаемый эффект для того, Я в основном хочу, чтобы кнопка все еще работала, , даже если на экране 5 точек, т. Е. Все сенсорные входы были израсходованы, а кнопка представляет 6-ю.
Возможно ли это?
Я попытался вставить представление с помощью userInteraction, отключенного ниже моих кнопок, но он все еще регистрирует касания, когда пользователь кранит экран. Кажется, единственный способ отключить регистрацию касаний - сделать это на всем экране (на родительском UIView).
ОБНОВЛЕНИЕ: Я попытался использовать распознаватели жестов для обработки всех событий касания и игнорировать те, которые не соответствуют требованиям. Вот мой код:
@interface ViewController : UIViewController <UIGestureRecognizerDelegate>
...
- (void)viewDidLoad
{
[super viewDidLoad];
UIGestureRecognizer *allRecognizer = [[UIGestureRecognizer alloc] initWithTarget:self action:nil];
allRecognizer.delegate = self;
[self.view addGestureRecognizer:allRecognizer];
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
CGPoint coords = [touch locationInView:self.view];
NSLog(@"Coords: %g, %g", coords.x, coords.y);
if (coords.y < 200) {
[self ignoreTouch:touch forEvent:nil];
return TRUE;
}
return FALSE;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"%i touch(es)", [touches count]);
}
Однако экран по-прежнему «читает» штрихи, так что если я помещаю 5 пальцев вниз, шестой один не вызовет нажатие кнопки ...
Спасибо за код, однако я боюсь, что он все еще не делает то, что мне нужно. Да, он не вызывает нажатиямиBegan, однако он все еще регистрирует сенсорные точки на экране. Поэтому, если вы коснетесь экрана 5 пальцами, а затем используйте 6-ю кнопку, чтобы нажимать любую из кнопок, она не читается. Я понимаю, что это немного странная проблема. – Smikey
Прошу прощения, но на данный момент у меня нет действительной регистрации программ, чтобы проверить это. Я не знаю, что проблема с регистрацией touchsBegan для вас, но я думаю, что самый простой способ - это забыть про эту невидимую кнопку и просто настроить BOOL, указывает, следует ли использовать код внутри touchhesBegan или нет. Например, если (_useCode) {} Редактировать: Это просто для этого 5-го и 6-го пальцевого корпуса, верно? Я думаю, что на iPhone было что-то в пальце 5 пальцев одновременно. 6-й палец не будет зарегистрирован независимо от того, что вы делаете. –
На самом деле существует 5 пальцевых ограничений, но я надеялся, что если вы проигнорируете пальцы, которые не были в «правильном» месте, это будет читать только те, которые были. Но, похоже, что независимо от того, что вы делаете, он все равно будет читать контакт с экраном, независимо от того, управляете ли вы прикосновением ... Я в основном работаю над корпусом, который покрывает часть экрана, но сделан из проводящего материала, и я не хочу, чтобы он вызывал точки касания на поверхности. Хорошо, спасибо за предложения. – Smikey