UIView子类的委托和gestureRecognizers

致命豪猪

我正在尝试创建一个类似于按钮的UIView类。我想完全以编程方式做到这一点。我能够显示该按钮,但单击不正确。

在我的类实现文件中,我具有初始化方法以及以下内容:

- (void)handlePress:(UILongPressGestureRecognizer *)sender{
    if(sender.state == UIGestureRecognizerStateBegan){
        NSLog(@"in handlePress");
    }
}

在我的视图控制器实现文件中,我有:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.button = [[buttonclass alloc] initButton];
    [self.view addSubview: self.button];

    UILongPressGestureRecognizer *singlePress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handlePress:)];
    [self.button.buttonView addGestureRecognizer:singlePress];
}

(button是类buttonclass的实例变量,而buttonView只是button的子视图)

我很确定问题出在问题之内:

UILongPressGestureRecognizer *singlePress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handlePress:)];
    [self.button.buttonView addGestureRecognizer:singlePress];

我什至不确定这些行是否应该放在按钮初始化函数中或视图控制器实现文件中。我应该添加以下行吗?

singlePress.delegate = self;

我尝试添加该行,但我不知道将其放置在何处,并且出现错误,并指出delegateself不是相同的类型。无论如何,当我尝试将GestureRecognizer连接到动作或将GestureRecognizer连接到UIView按钮时,都会出问题。

任何帮助将不胜感激!谢谢,祝你有美好的一天。

阿普尔夫

您应该将手势添加到按钮而不是按钮的子视图上。

UILongPressGestureRecognizer *singlePress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handlePress:)];
[self.button addGestureRecognizer:singlePress];

无需添加以下行:

singlePress.delegate = self;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在UIView子类中声明的委托在UIViewController中不起作用?

来自分类Dev

使用委托将数据从UIView子类发送到UIViewController

来自分类Dev

子类UILabel和UITextView与常见的UIView

来自分类Dev

在子类中访问委托

来自分类Dev

如何设置UIView委托?

来自分类Dev

FBLogin从UIView分配委托

来自分类Dev

为什么使用UIViewController和UIView子类UIResponder?

来自分类Dev

带有通用UIView的子类UILabel和UITextView

来自分类Dev

将NSTableView的委托和dataSource连接到自定义子类?

来自分类Dev

无法实现UIView子类

来自分类Dev

创建UIView的子类

来自分类Dev

如何子类化UIView?

来自分类Dev

如何正确实现协议-Swift中UIViewController和UIView之间的委托模式

来自分类Dev

何时注销UIView或UILabel的委托

来自分类Dev

何时注销UIView或UILabel的委托

来自分类Dev

子类中的委托声明与父类中的委托不兼容

来自分类Dev

在Swift中,我如何拥有一个具有内部和外部委托的UIScrollView子类?

来自分类Dev

在原始子类中捕获委托方法调用

来自分类Dev

从子类setDelegate设置超类委托

来自分类Dev

重写UIScrollView子类中的委托属性

来自分类Dev

在具有自动布局的UIView子类上正确使用internalContentSize和sizeThatFits:

来自分类Dev

从UIViewController实例化UIView子类

来自分类Dev

如何从UIView子类调用UIViewController?

来自分类Dev

UIView 的子类不调用 didSet

来自分类Dev

静态委托和替代

来自分类Dev

jQuery hover()和委托

来自分类Dev

委托和线程问题

来自分类Dev

UISeachBar和委托方法

来自分类Dev

MVVM ICommand和委托