2016-10-15 2 views
0

я создал UIView на кнопке Программного нажмите как этогоtouchsBegan не работает над UIView в iOS?

self.paintView=[[UIView alloc]initWithFrame:CGRectMake(0, 0,self.view.frame.size.width,self.view.frame.size.height+100)]; 
[self.paintView setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]]; 
[self.navigationController.view addSubview:self.paintView]; 

и добавил, что в navigationController, так что я могу видеть свой UIView в полноэкранном режиме.

Но когда я пытался обнаружить прикосновение ее не работает

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *touch = [touches anyObject]; 
    if (touch.view==self.paintView && self.paintView) { 
     [UIView animateWithDuration:0.9 animations:^{ 
      [self.sideView setFrame:CGRectMake(-290, 0, self.sideView.frame.size.width, self.sideView.frame.size.height)]; 
    }]; 
    } 

} 

Этот метод не совсем обнаружения в настоящее время.

+0

Это связано с тем, что вы блокируете родительский вид с некоторым новым представлением, созданным с помощью кода, метод touch принадлежит родительскому представлению, но не может его обнаружить, поскольку просмотр Child. – Dasem

ответ

0

Это может произойти, если «userInteractionEnabled» NOT включен во всех наблюдениях вашего представления. Если у какого-либо из супервизоров это свойство установлено значение false, события касания не будут обрабатываться для них или любого из их подзонов. Проверьте, может ли это быть проблемой.

0

И дайте UIView UserInteractionEnable = YES

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { } Replace ваш код с шахтной, который вы получите точку.

CGPoint point = [touch locationInView:touch.view]; 
CGPoint pointOnScreen = [touch.view convertPoint:point toView:nil]; 
NSLog(@"Point - %f, %f", pointOnScreen.x, pointOnScreen.y); 
NSLog(@"Touch"); 
0

Включить функцию userInteractionEnabled для всех супервизоров. Если у супервизмов это свойство установлено значение false, сенсорный режим обрабатывать не будет.

Вы также можете использовать UITapGestureRecognizer.

1

Вы можете попробовать ниже код, чтобы добавить вид и проверить:

self.paintView=[[UIView alloc]initWithFrame:CGRectMake(0, 0,self.view.frame.size.width,self.view.frame.size.height+100)]; 

[self.paintView setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]]; 


[self.window.rootViewController.view addSubview:self.paintView];//try this 

Вид создан общий UIViewController заполняет окно и находится в передней части SubView. Таким образом, ваш SubView не может получить штрихи.

rootViewController.view Будьте единственным видом на верхнем уровне в своем окне и добавьте подпрограммы под этим и проверьте.

Смежные вопросы