ios – UIView对象中的UIGestureRecognizer

ios – UIView对象中的UIGestureRecognizer,第1张

概述我创建了一个UIViewController,它包含一个UIView对象. 我希望UIView对象响应1手指单击,并且还用2个手指捏住. 我点击了xib中的“User Interaction Enabled”和“Multiple touch”选项. 我在UIView函数initWithFrame:中创建了UITapGestureRecognizer和UIPinchGestureRecognizer 我创建了一个UIVIEwController,它包含一个UIVIEw对象.

我希望UIVIEw对象响应1手指单击,并且还用2个手指捏住.

我点击了xib中的“User Interaction Enabled”和“Multiple touch”选项.

我在UIVIEw函数initWithFrame:中创建了UITapGestureRecognizer和UIPinchGestureRecognizer,因为它是UIVIEw对象的唯一入口点.但该对象不响应UIGestureRecognizer对象.为什么?或者,放置UIGestureRecognizer对象的最佳位置在哪里?

- (ID)initWithFrame:(CGRect)frame{    self = [super initWithFrame:frame];    if (self) {        // Initialization code        // single tap        UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];        singleTap.numberOfTapsrequired = 1;        singleTap.numberOftouchesrequired = 1;        [self addGestureRecognizer: singleTap];        // 2 fingers pinch        UIPinchGestureRecognizer* doubleMove = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleMove:)];        [self addGestureRecognizer: doubleMove];    }    return self;}
解决方法 您的问题是,当您在IB中实例化自定义视图子类时,会调用initWithCoder :.如果您使用initWithFrame以编程方式完成它:它可以正常工作.

有两种方法可以解决这个问题,

>将手势设置移动到另一个方法,并在initWithFrame:和initWithCoder中调用它们:如果您打算重用此组件并在手势上公开某种回调,我建议您这样做.>如果要实现此 *** 作并与控制器元素进行大量交互,请在vIEwDIDLoad中添加它们.

总结

以上是内存溢出为你收集整理的ios – UIView对象中的UIGestureRecognizer全部内容,希望文章能够帮你解决ios – UIView对象中的UIGestureRecognizer所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1060138.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存