私は現在、スクロールビューでサイズ変更された UIPickerView を持つアプリケーションを構築しています。私が直面している問題は、ピッカーをスクロールしようとすると、代わりにスクロールビューが移動することです。
過去数時間、次の hitTest を実行する UIScrollView サブクラスを作成して、ピッカーが選択されたときにスクロールビューを無効にすることで、これを修正しようとしました。
- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
UIView* result = [super hitTest:point withEvent:event];
if ([result.superview isKindOfClass:[UIPickerView class]])
{
NSLog(@"Cancel touch");
self.canCancelContentTouches = NO;
self.delaysContentTouches = NO;
self.scrollEnabled = NO;
}
else
{
self.canCancelContentTouches = YES;
self.delaysContentTouches = YES;
self.scrollEnabled = YES;
}
return result;
}
この上記のコードでは、UIPickerView の特定のセクションをクリックして保持すると、タッチがキャンセルされ、UIScrollview OK が無効になり、UIPicker を移動して新しい値を選択できることがわかりますが、PickerView の特定の領域で NSLog を実行すると、以下のような報告されたクラスで
NSLog(@"%@", [result.superview class]);
UIPickerTableViewWrapperCell をコンソールに出力し、 isKindOfClass[UIPickerView class] は入力されません。
isMemberOfClass も試しましたが、これも機能しません。
どんな助けでも大歓迎です。
ありがとうアーロン