2013-04-16 47 views
1

林添加一個UIPickerView到scrollview.When我通過從pickerview選擇行去它被隱藏起來,我couldnot選擇它,因爲我已經寫代碼時,用戶在任何地方點擊屏幕上刪除pickerview(滾動視圖)除pickerView.But以外,現在即使我點擊(選擇)pickerview我m gtng pickerview隱藏,因爲觸摸作爲ScrollView.de我不明白哪裏我會出錯。TapgestureRecogniser檢測到觸摸滾動型爲

- (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屏幕上的任意位置單擊時和不上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創建第二個手勢識別器,它可以吞掉那些不應該發送到滾動視圖的敲擊。

請參閱插圖一個完整的測試項目來實現這一目標。你可以看到,敲擊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; 
}