加载带有手势识别器的XIB文件需注意哪些问题

李兆奇

李兆奇

2016-02-19 11:21

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享加载带有手势识别器的XIB文件需注意哪些问题,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。

如果在你的应用程序中需要检测手势,比如点击(tap)、二指拨动 (pinch)、拖移(pan)和旋转(rotation),那么通过创建UIGestureRecognizer类来实现将十分简单。

接下来图老师小编给大家分享加载带有手势识别器的XIB文件需主要的问题。

首先新建一个继承自UIView的类,并创建相应的XIB文件

#import UIKit/UIKit.h@interface ZHDemoView : UIView+ (instancetype)demoView;@end

提供一个类方法以供快速创建当前类

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

在.m中实现类方法,通常从XIB中加载出来的是一个数组,所以用到了lastObject方法

+ (instancetype)demoView{ NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:@"ZHDemoView" owner:nil options:nil]; return [nibArray lastObject];}  在awakeFromNib中添加相应的手势- (void)awakeFromNib{ UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(click)]; [self addGestureRecognizer:tap];}- (void)click{ NSLog(@"%s", __func__);}

另外,测试用的XIB长这样:

在根控制器添加一个这样的View,运行并点击

结果是

2015-08-11 13:44:44.988 XIB

注意

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

[1797:362096] -[ZHDemoView click]

一切正常,接下来我们不在代码中添加手势,直接在XIB中添加(之前添加手势的代码已清除):

运行结果:

2015-08-11 14:02:12.747 XIB

注意

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

[1962:374487] -[UITapGestureRecognizer superview]: unrecognized selector sent to instance 0x7fe47af49c60

可以看到是消息发送错误,UITapGestureRecognizer中没有superview方法。

回到这张图

我们可以看到Objects栏下方有手势识别器和DemoView两个对象,那么是否有可能是因为XIB加载的对象错误呢?

因为之前提供的类方法中我们使用的是lastObject方法,这次我们使用firstObject试一试

更改类方法如下:

+ (instancetype)demoView{ NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:@"ZHDemoView" owner:nil options:nil]; return [nibArray firstObject];}

结果:

2015-08-11 14:13:16.847 XIB

注意

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

[2064:382058] -[ZHDemoView click:]

一切正常。

总结:

从XIB加载出来的是一个对象数组,通常情况下,我们只需要用到一个对象,此时用firstObject或者lastObject皆可。但是当你要使用手势识别器时,别弄错你取出的对象。建议不要在XIB中直接添加手势识别器,通过代码手动创建更稳妥和易于维护。

以上就是本文介绍加载带有手势识别器的XIB文件需注意的问题,希望能够帮助到大家。

展开更多 50%)
分享

猜你喜欢

加载带有手势识别器的XIB文件需注意哪些问题

编程语言 网络编程
加载带有手势识别器的XIB文件需注意哪些问题

孕妇坚持工作需注意哪些问题

电脑网络
孕妇坚持工作需注意哪些问题

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

老人装假牙需注意哪些问题

老人 老人养生 生活常识
老人装假牙需注意哪些问题

摆放空气净化器需注意哪些问题

生活常识
摆放空气净化器需注意哪些问题

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

春季孕妇保健需注意哪些问题?

怀孕
春季孕妇保健需注意哪些问题?

护理早产儿需注意哪些问题?

早产儿
护理早产儿需注意哪些问题?

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

5分钟教会五笔不用背口决

5分钟教会五笔不用背口决

HTML5 绘制图像(上)之:关于canvas元素引领下一代web页面的问题

HTML5 绘制图像(上)之:关于canvas元素引领下一代web页面的问题
下拉加载更多内容 ↓