2013-04-16 4 views
1

Я добавляю UIPickerView в scrollview. Когда я прошел выбор строки из pickerview, он спрятался, и я не смог его выбрать, потому что я написал код для удаления pickerview, когда пользователь нажимает в любом месте экрана (scrollView), кроме pickerView. Но теперь даже я нажимаю (выбираю) pickerview Я m gtng pickerview скрыт, потому что touch определяется как ScrollView. Я не мог понять, где Im идет не так.TapgestureRecogniser обнаруживает прикосновение как Scrollview

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{ 

    if(touch.view==testScroll) 
    { 

     if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad) 
     { 
      ViewForValuePicker.hidden=true;//view to which pickerview is added and this s view is added to scrollview 
      pickerView.hidden=YES; 

     } 
     return YES; 
    } 
    else 

     return NO; 
} 

Что я могу сделать, чтобы удалить pickerview при щелчке в любом месте на экране и Dont удалить его при постукивании по ряду pickerview

+0

показать мне свой код. – Balu

ответ

0

попробовать, как это может быть, это поможет вам,

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"touches began"); 
    UITouch *touch = [touches anyObject]; 
    if([touch view] isKindOfClass:[UIScrollView class]){ 

    //do whatever you want to do here 

    } 
} 
+0

Но этот метод не называется. Может ли сказать, что делать? – Aaradhya

0

Что вы можете сделать, так это создать второй распознаватель жестов для pickerview, который проглатывает те краны, которые не следует отправлять в scrollview.

Pls для иллюстрации иллюстрирует полный тестовый проект для достижения этого. Вы можете видеть, что нажатие pickerview было направлено на метод gestureswallover, а внешний вид pickerview всех кранов был перенаправлен на gesturehelper, чтобы вы могли реализовать свою логику в этих методах.

в ViewController.h эти методы действия жеста распознования:

- (IBAction) gesturehelper: (UITapGestureRecognizer*) sender; 
- (IBAction) gestureswallover: (UITapGestureRecognizer*) sender; 

enter image description here

В моей ViewController.m я это (специфическая логика должна быть включена в методах действий):

- (IBAction) gesturehelper: (UITapGestureRecognizer*) sender { 
    NSLog(@"gesturehelper tap, %@", sender.view); 
} 
- (IBAction) gestureswallover: (UITapGestureRecognizer*) sender { 
    NSLog(@"gestureswallover tap, %@", sender.view);  
} 

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { 
    return 1; 
} 

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { 
    return 5; 
} 
Смежные вопросы