我试图将两个添加UIScrollView到一个UIView,两个都scrollView正确显示,我遇到的问题是如何确定哪个scrollView滚动,因为我必须填充图像.这就是我在做的事情:
我有一个ViewController带UIScrollViewDelegate.
在loadView我的方法中ViewConroller,我执行以下操作:
CGRect scrollViewFrame1;
CGPoint scrollViewPoint1;
scrollViewPoint1.x = 0;
scrollViewPoint1.y = 57;
CGSize scrollViewSize1;
scrollViewSize1.width = 320;
scrollViewSize1.height = 154;
scrollViewFrame1.size = scrollViewSize1;
scrollViewFrame1.origin = scrollViewPoint1;
CGRect scrollViewFrame2;
CGPoint scrollViewPoint2;
scrollViewPoint2.x = 0;
scrollViewPoint2.y = 258;
CGSize scrollViewSize2;
scrollViewSize2.width = 320;
scrollViewSize2.height = 154;
scrollViewFrame2.size = scrollViewSize2;
scrollViewFrame2.origin = scrollViewPoint2;
scrollView1 = [[UIScrollView alloc] initWithFrame:scrollViewFrame1];
scrollView2 = [[UIScrollView alloc] initWithFrame:scrollViewFrame2];
Run Code Online (Sandbox Code Playgroud)
然后:
scrollView1.delegate = …Run Code Online (Sandbox Code Playgroud) 我有一个ScrollView用于显示PDF页面.当我滚动时,这显示了我在ScrollView中启用了分页的第二页.我为滚动设置了跳出属性false.我想显示正在显示哪个页面的页码.为此,我使用了以下代码..
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
if (scrollView == scrlView) {
if (lastContentOffsetX > scrollView.contentOffset.x) {
if (currentPage > 1) {
currentPage--;
self.title = [NSString stringWithFormat:@"%d/%d", currentPage, totalPages];
}
}
else if (lastContentOffsetX < scrollView.contentOffset.x) {
if (currentPage < totalPages) {
currentPage++;
self.title = [NSString stringWithFormat:@"%d/%d", currentPage, totalPages];
}
}
lastContentOffsetX = scrollView.contentOffset.x;
}
}
Run Code Online (Sandbox Code Playgroud)
如果每次拖动并且页面发生变化,我都没有任何问题.有一段时间我拖了很短的时间,页面不会改变并保持不变.我的页码数量增加/减少.
可以告诉我,当ScrollView停止滚动时我是否可以获得任何事件我可以获得当前偏移并完成我的任务.
我有一个像iOS iMessage详细视图的tableView .而且我在tableView顶部有一个按钮,用于"加载早期消息".
当我将tableView滚动到顶部时,我的按钮出现,在我单击按钮后,我填充了早期记录并重新加载tableView.
当记录在tableView中重新填充时,滚动位置不会改变.
顺便说一句,我试图保持滚动前一个位置值和setcontentoffset前一个CGPoint.但是当我点击按钮时,我意识到滚动位置始终为0.所以,在我setcontentoffset之后,滚动保持在顶部..
我需要将scrollview的位置重定位到上一个区域.
---编辑---
我尝试改进"保留scrollview的先前位置"的方法.
我找到了解决方案,效果很好.我将为所有人分享;
将此添加到.h文件:@property (nonatomic) CGFloat scrollsPreviousLocation;
和@synthesize scrollsPreviousLocation;.m文件.
现在,这是诀窍:我从底部计算滚动的位置..不是从顶部.
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
scrollsPreviousLocation = (self.tableView.contentSize.height - scrollView.contentOffset.y);
}
Run Code Online (Sandbox Code Playgroud)
在计算过程之后,现在我需要将内容偏移设置为先前的位置;
[tableView reloadData];
CGPoint offset = CGPointMake(0,tableView.contentSize.height - scrollsPreviousLocation);
[tableView setContentOffset:offset animated:NO];
Run Code Online (Sandbox Code Playgroud) 我从UIScrollView创建了一个自定义组件.
我创建一个自定义UIScrollview类并将其添加到我的滚动视图.
在" - (void)drawRect:(CGRect)rect"中的自定义类中,我按照我想要的方式设计滚动视图.一切正常.
我的问题是如何将我的scrollview添加为Custom类的委托.
我在我的自定义类中做了这个 -
self.delegate = self;
Run Code Online (Sandbox Code Playgroud)
并且委托得到设置,我可以访问UIScroll视图委托方法(如 - - (void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView).
我的问题是,一旦我将我的代表设置为'self.delegate = self;' 编译器给我一个警告,如下所示
请任何人帮我修复此警告.
我有这个功能:
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale
Run Code Online (Sandbox Code Playgroud)
声明是从文档中复制的.但是,我得到了一个"定罪参数类型
" warning 'CGFLoat' (aka double) vs 'float'.
将浮动更改为a CGFloat不会使警告消失.我该如何解决?
大家好,我已经调试了这个问题很长一段时间但到目前为止没有运气.我在这里迷失了,并且不知道造成这次崩溃的原因以及如何解决它.如果有人能为我提供一些帮助,我将非常感激,非常感谢!
我准备了一个示例项目来在GitHub上演示这个问题.
方案如下:
有两个视图控制器,即根视图和模态视图,每个视图控制器都有一个自定义滚动视图(即类SubScorllView)作为子视图,模态视图有一个用于关闭模态视图的按钮.
滚动视图是UIScrollView的子类,每个子类都有相应的委托协议,它们的类层次结构如下:
UIScrollView的
∟SuperScrollView
.....∟SubScrollView
该应用程序以非常简单的方式启动和运行,在AppDelegate的didFinishLaunchingWithOptions中:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor blackColor];
RootViewController * rootVC = [[RootViewController alloc] init];
self.navVC = [[UINavigationController alloc] initWithRootViewController:rootVC];
self.navVC.navigationBarHidden = TRUE;
self.window.rootViewController = self.navVC;
[self.window makeKeyAndVisible];
ModalViewController *modalVC = [[ModalViewController alloc] init];
[self.navVC presentViewController:modalVC animated:YES completion:nil];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
并且视图是从xib文件加载的,滚动视图的委托也在其中设置,并且有一些关于启动和设置滚动视图子类的委托的方法的覆盖.
当我通过单击模态视图中的"关闭"按钮关闭模态视图时出现问题,单击该按钮时,会发生以下情况:
- (IBAction)didPressedCloseButton:(id)sender {
self.subScrollView.delegate = nil;
[self dismissViewControllerAnimated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
该应用程序崩溃在以下部分SuperScrollView:
- (void)setDelegate:(id<SuperScrollViewDelegate>)delegate …Run Code Online (Sandbox Code Playgroud)