-1

サブビュー UILabel を使用して UIScrollView にアクセスする方法を知りたいです。

を使用して UIScrollView にアクセスしようとしました.superview。しかし、私は今エラーを受け取っています

No visible @interface for 'UIView' declares the selector 'scrollRectToVisible:animated:'

私が使用しているコードは次のようになります

- (void) SymbolButtonPressed:(NSString *)selectedString {

    UILabel *label = (UILabel *)[self.view viewWithTag:currentlySelectedTag];

// perform scrolling here, figure out what view your uilable is in.
    float newPosition = label.superview.contentOffset.x+label.frame.size.width;
    CGRect toVisible = CGRectMake(newPosition, 0, label.superview.frame.size.width, label.superview.frame.size.height);

    [label.superview scrollRectToVisible:toVisible animated:YES];

}
4

1 に答える 1

1

a のスーパービューはUILabelUIViewであるため、呼び出そうとしているメソッドに応答しません。UIScrollViewアクセスしようとしているメソッドとプロパティを Xcode が認識できるように、スーパービューを としてキャストできます。スーパービューがメソッドに応答するかどうかも確認する必要があります。

if([label.superview respondsToSelector:@selector(scrollRectToVisible:animated:)]) {
    [(UIScrollView *)label.superview scrollRectToVisible:toVisible animated:YES];
}

サンプル コードを考えると、スーパービューをキャストして contentOffset を取得する必要もあります。

float newPosition = ((UIScrollView *)label.superview).contentOffset.x+label.frame.size.width;
于 2014-01-19T22:48:41.257 に答える