アプリの月と年の値を取得するために、無限の水平スクロールビューを開発しています。無限スクロールの方法を見つけましたが、スクロールがアニメーション化またはドラッグを停止したときにラベルの値を取得する方法がわかりません。
- スクロールがアニメーション化/ドラッグを終了したときに上記のコンポーネントを使用して月の値を取得する方法はありますか、それともコンポーネントを変更する必要がありますか?
前もって感謝します。
アプリの月と年の値を取得するために、無限の水平スクロールビューを開発しています。無限スクロールの方法を見つけましたが、スクロールがアニメーション化またはドラッグを停止したときにラベルの値を取得する方法がわかりません。
前もって感謝します。
解決策を得た
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//some logics go here..........
CGPoint point = scrollView.center;
for (UIView *myView in scrollView.subviews)
{
if(CGPointEqualToPoint(myView.center, point) == YES )
{
if([myView isKindOfClass:[UILabel class]])
{
UILabel *label = (UILabel *)myView;
NSLog(@"Month is %@", label.text);
}
}
}
}
上記のコードは、スクロールビューの中央にラベルを返します。
それはあなたのscrollViewの実装に依存します、一般的にあなたは中心点でサブビューを得ることができます
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
詳細については、ドキュメントを確認してください。理想的には、scrollViewはどのビューが中央に移動されたかを認識し、いくつかのカスタムメソッドによってそれを返すことができます。
メインビューからサブビューを取得するためのコードを次に示します。
-スクロールデリゲートscrolldidEndメソッド:
UIView v = nil;
for(v in yourscroll.subviews){
if ([v isKindOfClass:UILabel]){
UILabel * lbl = v(UILabel *);
if (lbl.tag == yourSelectedLabelTag){
NSLog(lbl.text);
}
}
}
注:scrollviewでラベルビューを使用してタグを作成する必要があります。