国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

加載帶有手勢識別器的XIB文件需注意哪些問題

2020-07-26 03:34:34
字體:
供稿:網(wǎng)友

如果在你的應用程序中需要檢測手勢,比如點擊(tap)、二指撥動 (pinch)、拖移(pan)和旋轉(zhuǎn)(rotation),那么通過創(chuàng)建UIGestureRecognizer類來實現(xiàn)將十分簡單。

接下來小編給大家分享加載帶有手勢識別器的XIB文件需主要的問題。

首先新建一個繼承自UIView的類,并創(chuàng)建相應的XIB文件

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

提供一個類方法以供快速創(chuàng)建當前類

在.m中實現(xiàn)類方法,通常從XIB中加載出來的是一個數(shù)組,所以用到了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,運行并點擊

結(jié)果是

2015-08-11 13:44:44.988 XIB

注意

[1797:362096] -[ZHDemoView click]

一切正常,接下來我們不在代碼中添加手勢,直接在XIB中添加(之前添加手勢的代碼已清除):

運行結(jié)果:

2015-08-11 14:02:12.747 XIB

注意

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

可以看到是消息發(fā)送錯誤,UITapGestureRecognizer中沒有superview方法。

回到這張圖

我們可以看到Objects欄下方有手勢識別器和DemoView兩個對象,那么是否有可能是因為XIB加載的對象錯誤呢?

因為之前提供的類方法中我們使用的是lastObject方法,這次我們使用firstObject試一試

更改類方法如下:

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

結(jié)果:

2015-08-11 14:13:16.847 XIB

注意

[2064:382058] -[ZHDemoView click:]

一切正常。

總結(jié):

從XIB加載出來的是一個對象數(shù)組,通常情況下,我們只需要用到一個對象,此時用firstObject或者lastObject皆可。但是當你要使用手勢識別器時,別弄錯你取出的對象。建議不要在XIB中直接添加手勢識別器,通過代碼手動創(chuàng)建更穩(wěn)妥和易于維護。

以上就是本文介紹加載帶有手勢識別器的XIB文件需注意的問題,希望能夠幫助到大家。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 杭锦后旗| 曲阜市| 肇源县| 建水县| 花莲县| 牟定县| 佳木斯市| 札达县| 赫章县| 仙游县| 临洮县| 清徐县| 石台县| 高阳县| 蒙城县| 黑河市| 寻甸| 平舆县| 太谷县| 陈巴尔虎旗| 砀山县| 东宁县| 宜君县| 玉林市| 镇原县| 宜都市| 四会市| 阳城县| 镇江市| 南京市| 平遥县| 黑龙江省| 盘山县| 晋州市| 礼泉县| 五原县| 砀山县| 乐平市| 左权县| 平湖市| 平湖市|