自定义UIView没有接收触摸事件

时间:2012-12-19 15:03:09

标签: ios cocoa-touch uiview

我正在为我的应用程序构建一个自定义滑块。

我在Github找到了一个图书馆作为灵感。

我创建了文件:NKSlider作为UIView的子类,并在库drawRect上实现了库,并实现了方法:touchesMoved:withEvent:和{{ 1}}。但是没有任何触摸事件被调用。

这就是我将此自定义视图添加到视图控制器的方式:

touchesBegan:withEvent:

这是课程。我做错了什么?

NKHandler *nk = [[NKHandler alloc] init]; nk.frame = CGRectMake(20, 20, 280, 36); [self.view addSubview:nk]; [self.view addSubview:[[NKHandler alloc] initWithFrame:CGRectMake(20, 60, 280, 100)]];

.h

#import <UIKit/UIKit.h> @interface NKHandler : UIView @end

.m

4 个答案:

答案 0 :(得分:3)

nk.userInteractionEnabled = YES;

答案 1 :(得分:2)

如果 userInteractionEnabled技巧不起作用,您可以查看该视图的父视图自动调整属性

我改变了它,如下所示,因为故事板加载了它原本&#39;在纵向模式下,但我以横向方式呈现,因此父级的视图高度变为0 px 。甚至视图本身保持其高度,父母变成0像素,所以观点没有得到事件。

enter image description here enter image description here

答案 2 :(得分:0)

这可能是一个超级边缘的情况,但是我在代码中意外地让我的自定义视图类从UICollectionViewCell下降时遇到了这个问题,但是在XIB中它使用的元素是UIView

答案 3 :(得分:0)

我看过这行会导致UIView事件出现问题:

contentView.translatesAutoresizingMaskIntoConstraints = NO;

使用pushViewController和popViewControllerAnimated方法推送和弹出视图控制器后,此行可能会导致令人头疼的问题。再次显示contentView后,您可能会发现事件处理不起作用。