我有一个iPhone SDK应用程序,有多个视图在用户创建内容时出现和消失.在设备上使用该应用程序一段时间后,我遇到以下崩溃:
Program received signal: “EXC_BAD_ACCESS”.
(gdb) backtrace
#0 0x33369ebc in objc_msgSend ()
#1 0x320e5248 in -[UIScrollView(UIScrollViewInternal) _scrollViewAnimationEnded] ()
#2 0x338b4a14 in -[NSObject performSelector:withObject:] ()
#3 0x320e5098 in -[UIAnimator stopAnimation:] ()
#4 0x320e4b7c in -[UIAnimator(Static) _advance:] ()
#5 0x320e4a34 in LCDHeartbeatCallback ()
#6 0x34350e60 in HeartbeatVBLCallback ()
#7 0x332e91c0 in IOMobileFramebufferNotifyFunc ()
#8 0x316532f8 in ?? ()
#9 0x33866b50 in __CFMachPortPerform ()
#10 0x338ae52a in CFRunLoopRunSpecific ()
#11 0x338adc1e in CFRunLoopRunInMode ()
#12 0x3434e1c8 in GSEventRunModal ()
#13 0x32002c30 in …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建与用于查看屏幕截图的AppStore应用程序完全相同的效果:在UITableView中,我有UITableViewCell的自定义子类.其中一个旨在显示某些产品的预览,比如4个图像.我希望它们以与AppStore呈现应用程序截图相同的方式显示:在水平UIScrollView内部及其附加的UIPageControl.
所以我将我的UIScrollView和我的UIPageControl添加到我的UITableViewCell中,就像这样:
@implementation phVolumePreviewCell
- (id)init {
if (self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kVolumePreviewCellIdentifier]) {
[self setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
[self setSelectionStyle:UITableViewCellSeparatorStyleNone];
previews = [[NSMutableArray alloc] initWithCapacity:4];
for (int i = 0; i < 4; i++) {
[previews addObject:@"dummy"];
}
scrollView = [[UIScrollView alloc] initWithFrame:CGRectZero];
[scrollView setPagingEnabled:YES];
[scrollView setBackgroundColor:[UIColor grayColor]];
[scrollView setIndicatorStyle:UIScrollViewIndicatorStyleBlack];
[scrollView setShowsHorizontalScrollIndicator:YES];
[scrollView setBounces:YES];
[scrollView setScrollEnabled:YES];
[scrollView setDelegate:self];
[self.contentView addSubview:scrollView];
[scrollView release];
pageControl = [[UIPageControl alloc] initWithFrame:CGRectZero];
[pageControl setNumberOfPages:[previews count]];
[pageControl setBackgroundColor:[UIColor grayColor]];
[self.contentView addSubview:pageControl];
[pageControl release];
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
(注意:我在这里使用虚拟数据填充"预览",只是为了使[预览计数]有效;我想查看scrollView的滚动指示器仅用于测试目的,我稍后会隐藏它们). …
UIScrollView有一个委托属性,符合UIScrollViewDelegate
protocol UIScrollViewDelegate : NSObjectProtocol {
//...
}
class UIScrollView : UIView, NSCoding {
unowned(unsafe) var delegate: UIScrollViewDelegate?
//...
}
Run Code Online (Sandbox Code Playgroud)
UICollectionView使用不同的类型UICollectionViewDelegate覆盖此属性
protocol UICollectionViewDelegate : UIScrollViewDelegate, NSObjectProtocol {
//...
}
class UICollectionView : UIScrollView {
unowned(unsafe) var delegate: UICollectionViewDelegate?
//...
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用我的协议覆盖UIScrollViews委托时,如下所示:
protocol MyScrollViewDelegate : UIScrollViewDelegate, NSObjectProtocol {
//...
}
class MyScrollView: UIScrollView {
unowned(unsafe) var delegate: MyScrollViewDelegate?
}
Run Code Online (Sandbox Code Playgroud)
编译器给了我两个警告:
我如何子类化UIScrollView并覆盖委托属性的类型(即使用自定义委托协议)?
我知道如何在UIScrollView上运行contentOffset,有人可以向我解释如何在跟踪或减速时获得表示UIScrollView当前速度的实际数字吗?
我有一个滚动视图,两边都有左右两个按钮.
当我点击滚动视图将向左移动,当单击右键时,它将向右移动.我的滚动视图有20个按钮(大约),点击每个按钮执行一些操作.
一切都完美实施,工作正常.
我唯一无法实现的是阻止触摸滚动.我不希望用户手动滚动滚动视图.如何防止它通过触摸滚动并仍然能够单击滚动视图内的按钮?
我正在尝试在我的应用程序中创建类似跳板的界面.我正在尝试将UIButtons添加到UIScrollView中.我正在运行的问题是按钮没有通过任何触摸到UIScrollView - 如果我试图轻弹/滑动并碰巧按下按钮它没有注册UIScrollView,但如果我轻弹之间的空间按钮它会工作.如果我触摸按钮,按钮会单击/工作.
是否存在强制按钮将触摸事件发送到其父级(超级视图)的属性或设置?在添加UIScrollView之前,是否需要将按钮添加到其他内容?
这是我的代码:
//init scrolling area
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 480, 480)];
scrollView.contentSize = CGSizeMake(480, 1000);
scrollView.bounces = NO;
scrollView.delaysContentTouches = NO;
//create background image
UIImageView *rowsBackground = [[UIImageView alloc] initWithImage:[self scaleAndRotateImage:[UIImage imageNamed:@"mylongbackground.png"]]];
rowsBackground.userInteractionEnabled = YES;
//create button
UIButton *btn = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
btn.frame = CGRectMake(100, 850, 150, 150);
btn.bounds = CGRectMake(0, 0, 150.0, 150.0);
[btn setImage:[self scaleAndRotateImage:[UIImage imageNamed:@"basicbutton.png"]] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
//add "stuff" to scrolling area
[scrollView addSubview:rowsBackground];
[scrollView addSubview:btn];
//add …Run Code Online (Sandbox Code Playgroud) 我有一个带有一行按钮的水平滚动视图.滚动视图不会滚动,除非我进行非常快速的滑动.
如果我将按钮设置为userInteractionEnabled = NO,则滚动按预期工作,但当然按钮根本不起作用.
此应用程序在iOS 7及之前运行良好.它似乎是一个iOS 8"功能".我注意到我可以捕获按钮的拖动事件,但我不知道如何将其重定向回scrollView.
我想我需要用UIViews替换我的按钮并自己管理这些事件,但如果有人有其他想法或解决方案,我将不胜感激.
我想UIScrollView在我的应用程序中长按几个按钮和其他对象.在storyboard中,我添加了一个UIScrollView填充entre视图,然后IBOutlet在我的.h文件中创建了一个.我在.m文件中合成了滚动条,然后使用以下代码启动滚动条:
@synthesize scroller = _scroller;
- (void)viewDidLoad
{
[super viewDidLoad];
[_scroller setScrollEnabled:YES];
[_scroller setContentSize:CGSizeMake(640, 3000)];
}
Run Code Online (Sandbox Code Playgroud)
所以现在我需要知道如何实际添加诸如按钮之类的东西到滚动条的区域,该区域延伸到视图中可以看到的区域之下.我的问题是,当我在故事板中添加按钮到我的视图时,我只能添加到视图中可以看到的内容,因此需要知道如何添加按钮到我将滚动到的部分!
希望这很清楚.感谢你的帮助!
我的UIScrollView不会向下滚动.我不知道为什么.我已经关注了有关此问题的Apple文档.
@IBOutlet weak var scroller: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func viewDidLayoutSubviews() {
scroller.scrollEnabled = true
// Do any additional setup after loading the view
scroller.contentSize = CGSizeMake(400, 2300)
}
Run Code Online (Sandbox Code Playgroud)
请指教.谢谢.
我想实现UICollectionView水平和无限滚动?
uiscrollview uiscrollviewdelegate ios uicollectionview swift
uiscrollview ×10
ios ×5
iphone ×4
objective-c ×3
swift ×3
scroll ×2
uibutton ×2
cocoa-touch ×1
ios8 ×1
uitableview ×1
xcode6 ×1