Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在动态创建的uibuttons上未检测到单个点击_Ios_Dynamic_Uiscrollview_Uibutton_Subclassing - Fatal编程技术网

Ios 在动态创建的uibuttons上未检测到单个点击

Ios 在动态创建的uibuttons上未检测到单个点击,ios,dynamic,uiscrollview,uibutton,subclassing,Ios,Dynamic,Uiscrollview,Uibutton,Subclassing,有必要创建UIButton的子类,我们称之为subButton。这些子按钮逐个实例化,并动态添加到UIScrollView对象中 不幸的是,子按钮的反应并不像预期的那样。滚动离开第一个动态生成的子按钮,然后返回到它们。他们对单次敲击失去了反应能力。我无法解释这种行为。有人能解释为什么它会这样吗 非常感谢 源代码 self.subButton = [[SubButton alloc]initWithFrame:CGRectMake(69.5, y, 201, 114)]; [self.subBut

有必要创建UIButton的子类,我们称之为subButton。这些子按钮逐个实例化,并动态添加到UIScrollView对象中

不幸的是,子按钮的反应并不像预期的那样。滚动离开第一个动态生成的子按钮,然后返回到它们。他们对单次敲击失去了反应能力。我无法解释这种行为。有人能解释为什么它会这样吗

非常感谢

源代码

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

子按钮方法drawVidPreview将一些子视图添加到自身中

请确保您没有将相同的
UIGestureRecognitor
实例添加到所有
UIButtons
,相反,对于每个
UIButton
,您需要添加一个单独的实例,但是所有手势实例都可以指向同一个目标。

按钮是否完全没有响应,或者只是不响应一次点击?那可能会帮助我们帮助你


如果它们根本没有响应,我会检查您的视图层次结构,以确保按钮上方没有其他视图(可能不可见)。或者,您可能认为按钮没有添加到父视图中?

最后,我可以解决这个问题。第一个子按钮不响应UIControlEventTouchDown的单次点击的原因是uiScrollview内容偏移设置为负y值。这首先是没有必要的,完全是出于懒惰。我通过给它一个正值来修正它

因此,我的结论是,如果您没有正确设置scrollView的内容偏移量或内容大小,则scrollView中动态添加的一些按钮可能不会对适当的点击做出响应。如果所有按钮都完全放置在uiScrollview对象上,甚至会出现这种情况

我也可以通过调整uiScrollview实例的内容大小来确认这一点。我将uiScrollviews实例的y值的大小更改了几个点,然后最后的一些按钮不再对点击做出响应


只需再次增加y值的内容大小,即可使按钮再次响应。

您可以添加按钮的代码吗?谢谢您的提醒,但事实并非如此。这些都是好问题。如果我将代码更改为[self.subButton addTarget:self action:@selector(handleSingleTap:)forControlEvents:uicontrolEventTouchOutside],它们实际上会对单次点击作出反应;但反应过于敏感。它与滚动冲突。是的,我需要两行,很可能是缺乏这方面的知识。我不知道如何获取UIScrollview对象的子视图,这就是为什么我将它们添加到NSMutableArray中,以便能够修改它们在选择时的位置。也许可以尝试:UIControlEventTouchDown看看这对您有何作用。谢谢,这是我真正的意思,它对我不起作用。作为一个(uicontrolEventTouchOutside),我意外地写了下来。