メインビューのサブビューとしてuipickerviewを追加しています。バックグラウンドビューをタップしてピッカービューを閉じるには、メインビューにUITapGestureRecognizerを追加します。バックグラウンドをタップしてUIPickerViewを終了する
私は私がpickerviewを却下していますhandleSingleTap法では、メインビュー
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
gestureRecognizer.numberOfTapsRequired=1;
gestureRecognizer.numberOfTouchesRequired=1;
gestureRecognizer.delegate = self;
[self.view addGestureRecognizer:gestureRecognizer];
[gestureRecognizer release];
ためGestureRecognizerを追加するには、次のコードを使用しています。
しかし、問題はhandleSingleTapはpickerviewの内部をタップするときにも呼び出されます。それを避けるために、私はUIGestureRecognizer
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
/*
*If the tap is inside a button return NO, to ensure the button click is detected.
*/
if ([touch.view isKindOfClass:[UIButton class]]){
return FALSE;
}else if([touch.view isKindOfClass:[UIPickerView class]]) {
return FALSE;
}
return TRUE;
}
次のデリゲートメソッドを使用するには、ボタンのために働いている、しかし、UIPickerView
のために働いていません。誰もこれで私を助けることができますか?
代わりisKindOfClassのisMemberOfClassを試してみてください... –
@Ankitが機能していない... – PgmFreek