大家好,又见面了,我是你们的朋友全栈君
前几天做了个手势可以改变文章字体大小的功能。开始,在当前view中添加一个UITextView ,然后添加- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event函数,可怎么也触发不了,在网上找了些资料,说得也不是很清楚,今天把它总结下。
首先说原因吧,你把UITextView 加载到当前view上,然后在当前文件中写函数(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event,手势触摸时,其实触发的是当前view重构父类的touchesbegan函数,而加载UITextView时,UITextView 其实也有相应的touchesbegan函数,UITextView 继承UIScrollView->UIRespone 。所以说,当你点击UITextView想触发相应手势函数,是做不到了,因为它始终触发的是当前view的手势函数,明白了吧,现在来说做法。
关键步骤:重构UITextView
1、首先你得重现写个类,如MyTextView
#import <UIKit/UIKit.h>
@interface MyTextView : UITextView @end
#import “MyTextView.h”
@implementation MyTextView
– (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { } return self; }
– (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { }
– (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { }
– (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { }
– (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { }
@end
2、然后你再在view中添加改UITextView 如:
MyTextView *textView = [[MyTextView alloc] initWithFrame:CGRectMake(0, 63, 320, [SettingManager shareInstance].nIphoneHeight – TITLE_HEIGHT – NAV_HEIGHT*2)]; [self.view addSubview:textView];
这样当你手势触发的时候,就会触发MytextView 中的touchesBegan 函数了,再在相应的手势函数中就可以做相应的操作了。
最后,如果想要通过手势改变文章字体,图片等,如果文章较长,可能会先会滚动,从而忽略掉手势操作。那你就需要设置下了将canCanelContentTouches 设置为NO, 多点触发multipleTouchEnabled设置为YES,delaysContentTouches设置为NO,后两个必须设置。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/164184.html原文链接:https://javaforall.cn