UITextView 手势触发 TouchesBegan 函数

UITextView 手势触发 TouchesBegan 函数前几天做了个手势可以改变文章字体大小的功能。开始,在当前view中添加一个UITextView,然后添加-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event函数,可怎么也触发不了,在网上找了些资料,说得也不是很清楚,今天把它总结下。       首先说原因吧,你把UITextView加载到当前view上,

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

        前几天做了个手势可以改变文章字体大小的功能。开始,在当前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.net/164184.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月25日 上午11:16
下一篇 2022年7月25日 上午11:16


相关推荐

  • redis集群实战

    redis集群实战

    2021年9月15日
    49
  • linux部署tomcat项目详细教程(安装linux到部署tomcat)

    linux部署tomcat项目详细教程(安装linux到部署tomcat)近来想要研究下linux,所以就搭了个linux系统来配置服务器玩玩。这里分了个目录,如果已经安装好虚拟机或者linux系统的小伙伴可以直接跳过前面的安装介绍,直接看部署。文章目录一、总步骤说明二、安装虚拟机三、创建linux系统一、总步骤说明下载需要的材料(该博客有提供),这里我用到的主要有1)虚拟机Vmware,2)linux镜像文件CentOS-6.5-x86_64-bin-DVD1.iso3)服务器apache-tomcat-7.0.105.tar.gz4)jdk7u79linuxx

    2022年7月18日
    20
  • navicat 15 激活码(JetBrains全家桶)「建议收藏」

    (navicat 15 激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月28日
    100
  • Java安全之Weblogic内存马

    Java安全之Weblogic内存马0x00前言发现网上大部分大部分weblogic工具都是基于RMI绑定实例回显,但这种方式有个弊端,在WeblogicJNDI树里面能将打入的RMI后门查看

    2021年12月13日
    53
  • Database Explorer连接Oracle 错误invalid number format for port number

    Database Explorer连接Oracle 错误invalid number format for port number将 ConnectionUR 改为 jdbc oracle thin localhost 1521 orcl 连接成功

    2026年3月26日
    3
  • 反射getmethod参数_java通过反射获取属性值

    反射getmethod参数_java通过反射获取属性值1、forName方法forName是一个静态方法,其作用:通过调用来获取类名对应的Class对象,同时将Class对象加载进来。如果将类名保存在字符串(如xml)中,就可以在程序运行时,动态调用加载。注意:只有调用的参数是类名或者方法时,才可用。2、newInstance()方法作用:将对象实例化。返回类型为Object。与new的区别在于,new可以带参,而newInstance()不可以,…

    2025年12月2日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号