我正在为我的应用程序构建一个自定义滑块。
我在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
答案 0 :(得分:3)
nk.userInteractionEnabled = YES;
答案 1 :(得分:2)
如果 userInteractionEnabled技巧不起作用,您可以查看该视图的父视图自动调整属性。
我改变了它,如下所示,因为故事板加载了它原本&#39;在纵向模式下,但我以横向方式呈现,因此父级的视图高度变为0 px 。甚至视图本身保持其高度,父母变成0像素,所以观点没有得到事件。
答案 2 :(得分:0)
这可能是一个超级边缘的情况,但是我在代码中意外地让我的自定义视图类从UICollectionViewCell
下降时遇到了这个问题,但是在XIB中它使用的元素是UIView
。
答案 3 :(得分:0)
我看过这行会导致UIView事件出现问题:
contentView.translatesAutoresizingMaskIntoConstraints = NO;
使用pushViewController和popViewControllerAnimated方法推送和弹出视图控制器后,此行可能会导致令人头疼的问题。再次显示contentView后,您可能会发现事件处理不起作用。