有必要创建UIButton的子类,让我们称之为subButton。这些子按钮逐个实例化并动态添加到UIScrollView对象。
不幸的是,subButtons没有按预期反应。滚动离开第一个动态生成的子按钮然后返回它们。他们放松了对单次敲击的反应。我无法解释这种行为。有人能解释为什么它的表现如此吗?
非常感谢。
源代码
self.subButton = [[SubButton alloc]initWithFrame:CGRectMake(69.5, y, 201, 114)];
[self.subButton setBackgroundColor:[UIColor blueColor]];
self.subButton.imageData = imageData;
self.subButton.videoPath = videoPath;
self.subButton.vidIndex = _indexVideo +1;
[self.subButton drawVidPreview];
[self.subButton setTag:(_indexVideo +1)];
[self.subButton addTarget:self action:@selector(handleSingleTap:) forControlEvents:UIControlEventTouchUpInside];
[self.videoScroll addSubview:self.subButton];
[_videoPreviews addObject:self.subButton];
subButton方法drawVidPreview为自己添加了一些子视图。
答案 0 :(得分:2)
按钮根本没有响应,或者只是不单击?这可能有助于我们帮助你。
如果他们根本没有回应,我会检查您的视图层次结构,以确保没有其他视图(可能不可见)位于按钮上方。或者,可能是您没有将按钮添加到父视图中?
答案 1 :(得分:0)
请确保您没有向所有UIGestureRecognizer
添加相同的UIButtons
实例,而是为每个UIButton
添加一个单独的实例,但是所有手势实例都可以指向达到同一目标。
答案 2 :(得分:0)
最后,我可以解决这个问题。第一个子按钮没有响应UIControlEventTouchDown单次敲击的原因是因为uiScrollview内容偏移设置为负y值。这首先是没有必要的,是出于纯粹的懒惰。我通过给它一个正值来纠正它。
所以我的结论是,如果你没有正确设置scrollView的内容偏移量或内容大小,一些动态添加到scrollView的按钮可能不会响应适当的点击。如果所有按钮完全放在uiScrollview对象上,情况就是如此。
我可以通过玩uiScrollview实例的内容大小来确认。我将uiScrollviews实例的y值的大小改变了几个点,然后一些最后的按钮不再响应于敲击。
只需再次增加y值的内容大小,使按钮再次响应。