2014-01-19 33 views
-1

我想知道如何使用子视图UILabel访问UIScrollView。programigaclly滚动UIScrollView使用子视图元素

我曾尝试使用.superview访问的UIScrollView但是我现在reciving

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]; 

} 

任何帮助,将不胜感激错误。

回答

1

UILabel的超级浏览器类型为UIView,因此不会响应您尝试调用的方法。您可以将超级视图转换为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; 
+0

的XCode dosnt这样的代码。看起来我必须找到另一种方式来访问它。它的理由是我有多个UILabels里面放置在UITableViewCells内的多个滚动视图。所以我有一个UIScrollviews作为它们的单元格的表,并试图找出哪个UIScroll视图滚动。 – HurkNburkS

+0

@HurkNburkS我已经扩展了我的答案,包括将superview投射到UIScrollView - 这可能是Xcode抱怨的。试试看。 – Matt

相关问题