首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用UITextView作为子视图创建UIScrollView获取触摸事件

首先,UITextView 是一个继承自 UIView 的控件,用于显示和编辑文本。UIScrollView 是一个继承自 UIView 的控件,用于创建可滚动的视图,通常用于显示大量数据。

要使用 UITextView 作为子视图创建 UIScrollView,并获取触摸事件,可以按照以下步骤进行:

  1. 创建一个 UIScrollView 实例,并设置其属性,如宽度、高度、contentSize等。例如:
代码语言:txt
复制
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 200)];
scrollView.contentSize = CGSizeMake(self.view.frame.size.width, 200);
  1. 创建一个 UITextView 实例,并将其添加到 UIScrollView 中。例如:
代码语言:txt
复制
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height)];
textView.text = @"Hello, World!";
textView.font = [UIFont systemFontOfSize:14];
textView.textColor = [UIColor blackColor];
textView.editable = NO;
textView.scrollEnabled = NO;
[scrollView addSubview:textView];
  1. 设置 UIScrollView 的触摸事件。例如:
代码语言:txt
复制
scrollView.delegate = self;
  1. 实现 UIScrollViewDelegate 协议中的方法,以处理滚动事件。例如:
代码语言:txt
复制
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGFloat y = scrollView.contentOffset.y;
    CGRect rect = textView.frame;
    rect.origin.y = y;
    textView.frame = rect;
}

在这个例子中,当 UIScrollView 滚动时,textView 的 y 坐标也会随着滚动而移动,从而实现 UIScrollView 的滚动效果。

以上步骤只是简单的示例,你可以根据自己的需求进行修改和扩展。希望对你有所帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)

; -- "- (NSSet *) allTargets" 方法 : 获取方法对象集合; -- "- (UIControlEvents) allControlEvents" 方法 : 获取所有的事件集合...触摸背景关闭虚拟键盘 (1) 修改 Custom Class  修改背景类别 :  -- 修改原因 : 默认的背景控件时 UIView, 该控件没有 IBAction 事件, 因此需要将背景控件设置为...UITextField 是单行文本; -- 不能触发事件 : UITextView 没有继承 UIControl 控件, 不能绑定 IBAction 事件处理方法; -- 可滚动 : UITextView...UIScrollView 属性简介 (1) UIScrollView 简介 UIScrollView 简介 :  -- 显示内容多 : 可滚动控件, 可以使用手指拖动控件中的内容, 在其中可以显示多个屏幕的内容...UITextView 常用方法简介 (1) UITextView 简介 UITextView 继承结构 : UITextView 继承了 UIScrollView, 没有继承 UIControl, 因此该控件没有

6.8K20

【IOS开发基础系列】UIScrollView专题

1 UIScrollView原理        在滚动过程当中,其实是在修改原点坐标。当手指触摸后,scroll view会暂时拦截触摸事件,使用一个计时器。...因为滚动视图没有滚动条,它必须知道一个触摸信号是打算滚动还是打算跟踪里面的视图。...假如定时器行动时,没有任何的大的位置改变,滚动视图就发送一个跟踪事件触摸视图。如果在定时器消失前,用户拖动他们的手指足够的远,滚动视图取消视图的任何跟踪事件,滚动它自己。...当手指触摸后, scroll view会暂时拦截触摸事件,使用一个计时器。...总共3个颜色:默认、黑、白 scrollIndicatorInsets     设置滚动条的位置 2.2 具体使用范例 使用一个ScrollView // 创建一个UIScrollView CGRectframe

57930
  • 深入理解RunLoop及在开发中的应用

    一.RunLoop定义 RunLoop:运行循环,简单的说就是处理线程事件和管理线程的一种机制。当线程的事件结束时,runloop将会自动休眠,app主线程中的runloop处于一直唤醒状态。...2.RunLoop在第一次获取创建,在线程结束时销毁;只能在一个线程的内部获取其 RunLoop(主线程除外)。...Source0:非基于端口port,例如触摸,滚动,selector选择器等用户触发的事件;(只包含了一个回调函数,它并不能主动触发事件) Source1:基于端口port,一些系统事件; (包含了一个...这个时候就可以开启一个线程,把耗时的操作放到线程中。线程做完事情以后,就会销毁。有时我们不希望子线程大量的创建和销毁,就可以使用 RunLoop 控制线程的生命周期。...每一次点击按钮的时候,线程执行完方法,直接释放掉了,下一次直接创建了一个新的线程 使用 RunLoop 控制线程保活 /** 线程对象 */ @property(strong,nonatomic)

    1.3K20

    iOS 中的事件响应

    UIScrollView处理触摸事件的特殊之处及其原理。...当用户在 UIScrollView 的一个视图上按下时,UIScrollView并不知道用户是想要滑动内容视图还是点击对应视图,所以在按下的一瞬间, 事件 UIEvent 从 UIApplication...传递到 UIScrollView 后,其会先将该事件拦截而不会立即传递给对应的视图, 同时开始一个 150ms 的倒计时,并监听用户接下来的行为。...open var canCancelContentTouches: Bool // 在UIScrollView的子类中重写该方法,用于返回是否将事件传递给对应的视图,默认返回YES,如果返回NO,该事件不会传递给对应的视图..., in view: UIView) -> Bool // 在UIScrollView的子类中重写该方法,用于返回是否取消已经传递给视图事件,默认当视图是UIControl时返回NO,否则返回YES

    2.7K11

    iOS开发UIScrollView使用详解 原

    iOS开发UIScrollView使用详解 一、ScrollView常用方法和属性 @property(nonatomic)CGPoint contentOffset; 设置滚动的偏移量 @property...readonly,getter=isDecelerating) BOOL decelerating; 获取视图是否开始减速(用户停止拖动但视图仍在滚动) @property(nonatomic) BOOL...delaysContentTouches; 设置视图是否延迟处理触摸事件(会将消息传递给视图) @property(nonatomic) BOOL canCancelContentTouches;...设置是否给视图传递取消动作的消息(默认设置为YES,当scrollView触发事件的时候,其视图不能触发,如果设置为NO,则视图会继续触发事件) - (BOOL)touchesShouldBegin...;  视图减速结束时触发的方法 - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView; 视图动画结束时触发的方法,使用

    1.6K30

    iOS面试题-UI篇

    loadView用来自定义view,只要实现了这个方法,其他通过xib或storyboard创建的view都不会被加载 看懂控制器view创建的这个图就行 [image] IBOutlet连出来的视图属性为什么可以被设置成...A的view的部分区域中显示 假设控制器B的view中有一个UIScrollView这样一个控件 如果此时在控制器B的viewDidLoad中设置UIScrollView的contentSize的话会导致不准确的问题...-(void)viewDidLayoutSubviews; 触摸事件的传递 触摸事件的传递是从父控件传递到控件 如果父控件不能接收触摸事件,那么子控件就不可能接收到触摸事件 不能接受触摸事件的四种情况...如何找到最合适处理事件的控件: 首先,判断自己能否接收触摸事件 可以通过重写hitTest:withEvent:方法验证 其次,判断触摸点是否在自己身上 对应方法pointInside:withEvent...在视图层次结构的最顶层视图也不能处理接收到的事件或消息,则将事件或消息传递给UIWindow对象进行处理 如果UIWindow对象也不处理,则将事件或消息传递给UIApplication对象 如果UIApplication

    2K21

    IOS开发系列——UIView专题之五:常用开发技巧篇

    事件队列,UIApplication会从事件队列中取出触摸事件并传递给key window(当前接收用户事件的窗口)处理,window对象首先会使用hitTest:withEvent:方法寻找此次Touch...操作初始点所在的视图(View),即需要将触摸事件传递给其处理的视图,称之为hit-test view。...,直到有视图返回非空对象或者全部视图遍历完毕; •若第一次有视图返回非空对象,则hitTest:withEvent:方法返回此对象,处理结束; •如所有视图都返回非,则hitTest:withEvent...如果一个视图的区域超过父视图的bound区域(父视图的clipsToBounds属性为NO,这样超过父视图bound区域的视图内容也会显示),那么正常情况下对子视图在父视图之外区域的触摸操作不会被识别...UIScrollView 5.1.5通过UIView对象获取其所属UIViewController 通过UIView对象获取该对象所属的UIViewController可以使用UIResponder

    1.1K20

    输入框高度随输入内容变化

    实现这个效果的关键点只有两点: 获取正在输入内容在UITextView占用了多少行 让UITextView动态改变大小 一开始,为了解决第一个问题,我一直在考虑怎么获取换行事件,发现只用捕捉\n输入即可...所以感觉这个思路太麻烦 对于第一点,有一个方便的计算方法,就是获取UITextView内容的高度比上UITextView的字体的高度,即可得到当前的行数。...这里有一个技巧,那就是不要用UITextView的bound.size.height获取其高度,因为这个获取的高度跟你输入的文字总高度并没有任何关系。...要知道,UITextView是继承UIScrollView的。...好了,知道其集成UIScrollView就好办了,因为UITextView只有在输入内容超过其显示范围才可以拖动,那就知道输入文字的bound就是UIScrollView的contentSize。

    2.5K10

    Cobub无码埋点关键技术实现流程(附图)

    前端埋点作为一个比较成熟的数据接入手段被广泛应用着。目前埋点分为两种方式,有码与无码埋点。有码埋点比较容易理解,即调用SDK的API,在代码中插入埋点的相关代码,实现用户行为采集。...手势停止时获取悬浮窗中心点的坐标。 遍历主window上的视图,找到包含上述悬浮窗中心点且能响应用户交互的最里层视图,即为用户可以圈选的视图。 参考iOS控件的消息传递链,有个核心方法。...此API自动遍历视图,找到包含point的视图,event传nil。...计算节点的index,这个步骤,有种特殊的视图需要注意,可复用视图的index是跟数据源相关的,比如UITableViewCell,此类视图的index不能使用视图的subviews的下标代替,应该使用数据源的下标代表...UIScrollView,UITextView,UITableView,UICollectionView 类型的控件,先hook -(void)setDelegate:(id)delegate 方法,然后再

    1.4K60

    MyLayout&TangramKit 的重大升级!

    为此当UIScrollView要和AutoLayout进行结合使用并实现滚动能力的话就不能直接将所有视图都添加到UIScrollView中去, 而是需要中间建立一个容器视图,首先将容器视图添加到UIScrollView...= CGRectMake(100, 100, 100, 100); //2.创建一个容器视图, 这个容器视图放入滚动视图中,保证滚动视图只有一个容器视图。...= CGRectMake(100, 100, 100, 100); //2.创建一个容器视图, 这个容器视图放入滚动视图中,保证滚动视图只有一个容器视图。...然后在UITableViewCell的派生类中建立一个根布局视图,这个根布局视图作为视图添加到contentView中代码如下: //假设根布局视图是一个垂直线性布局视图。...因为布局视图重载intrinsicContentSize方法,因此当将某个布局视图作为UITableViewCell的视图时如果想使用布局视图的尺寸自适应的能力,只需要将布局视图的尺寸设置为wrap即可

    2.1K20

    UI篇-UIResponder之事件传递和响应精析

    iOS中的几种常见事件 ? 这篇文章只讨论触摸事件。...//******************* 华丽的分割线 **************** 系统先调用pointInSide: WithEvent:判断当前视图以及这些视图视图是否能接收这次点击事件...,然后在调用hitTest: withEvent:依次获取处理这个事件的所有视图对象,在获取所有的可处理事件对象后,开始调用这些对象的touches回调方法 在自定义View中重写 touchesBegan...我们在使用UITextView和UITextField的时候,可以通过它们的inputAccessoryView属性给输入时呼出的键盘加一个附属视图,通常是UIToolBar,用于回收键盘。...但是当我们要操作的视图不是UITextView或UITextField的时候,inputAccessoryView就变成了readonly的。

    2.5K30

    IOS开发之视图视图控制器

    3.界面都是视图对象,即在UIView类的实例中进行布局,UIView表示屏幕上的一块矩形区域,负责渲染矩形区域中的内容,并且响应该区域内发生的触摸事件。...我们还可以把视图看做是一个视图容器,视图上面还可以添加一个视图。往父视图中添加的SubView会被放在一个数组中。...UITableView类是UIScrollView类的子类,用于管理数据列表,如图二,还有其他的容器视图在这就不一一列举啦。 ?         ...6.导航视图             页签条和导航条和视图控制器结合使用,为用户提供从一个屏幕到另一个屏幕的导航工具。...上面视图部分先就说这么多吧,那么我们的视图控制器应如何使用呢?

    1.8K70

    iOS 全屏侧滑手势UIScrollViewUISlider间滑动手势冲突

    效果预览 一、前期准备 有一个支持全屏侧滑返回的视图控制器ViewController,ViewController.view上有一个UIScrollViewUIScrollView上有UISlider...本身的拖拽事件却没有响应;向左拖拽UISlider时,响应的是UIScrollView的拖动事件,而UISlider本身的拖拽事件也没有响应。...分析解决问题 1 如果你了解事件的传递和响应链机制的话,应该能想到,是由于UIScrollView的内部手势方法阻断了全屏侧滑返回手势的的响应,那我们就找到这个方法,代码如下 ; 创建一个UIScrollView...scrollView.delaysContentTouches = NO; delaysContentTouches 默认值为YES 表示延迟scrollView上视图的响应,所以当直接拖动UISlider...gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{ //如果手势是触摸

    4.1K20

    UIScrollView的一步步实现1 简介1.1 工作原理1.2 UIScrollView常见的几个重要控件1.3 UIScrollView常见的重要属性1.4 手工代码实现拖动2 三个重要属性的进

    1 简介 UIScrollView 是负责滚动的视图。苹果最强大的地方就在于其良好的UI展示,和UE体验。如果不会很好的使用UIScrollView,就等于丧失了苹果一般的法力。...UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容 1.1 工作原理 在缩放的时候,原理是操作被缩放控件的的transform数值。...常见的几个重要控件 UITableView UICollectionView UITextView 1.3 UIScrollView常见的重要属性 属性名 作用 contentSize 设置UIScrollView...的滚动范围 contentOffset UIScrollView当前滚动的位置 contentInset 增加滚动视图四周的增加滚动范围 bounces 是否有弹簧效果,默认是开启的 scrollEnabled...1.4 手工代码实现拖动 // 创建scrollView UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame

    1.6K60

    解决UITableView中Cell重用机制导致内容出错的方法总结

    UITableView继承自UIScrollview,是苹果为我们封装好的一个基于scroll的控件。...上面主要是一个个的UITableViewCell,可以让UITableViewCell响应一些点击事件,也可以在UITableViewCell中加入UITextField或者UITextView等子视图...比如,当一个cell含有一个 UITextField的子类并被放在重用queue中以待重用,这时如果一个未包含任何视图的cell要显示在屏幕上,就会取出并使用这个重用的 cell显示在无任何视图的cell...这个方法是通过删除重用的cell的所有视图,从而得到一个没有特殊格式的cell,供其他cell重用。...alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } else { //删除cell的所有视图

    2.4K50

    IOS触摸事件分发机制详解

    前言 很多时候大家都不关心IOS触摸事件的分发机制的实现原理,当遇到以下几种情形的时候你很可能抓破头皮都找不到解决方案: 某个点击消息由父视图来处理,视图怎么把消息传递给父视图 这个按钮不灵敏,怎么扩大点击响应区域...原理详解 IOS把用户触发事件打包成一个UIEvent对象,作为事件传递的消息载体,放入当前活跃的APP的消息队列中,然后通过Hit-Testing来找到响应者,响应者通过响应链的传递做出响应,这就是IOS...IOS把屏幕监测到的点击事件用UITouch对象来表示,最终被封装成UIEvent作为事件的消息载体在响应链上传递。...Hit-Testing就完美的解决了这个问题,通过检测触摸点是否在相关的视图边界范围内,如果在,就继续递归检测该视图的所有视图,离用户最近的那个视图的边界如果包含触摸点,那么它就是我们要找的Hit-Test...父视图成为first responder,视图事件沿着响应链转发。

    3.6K90

    Cocoa编程中视图控制器与视图类详解

    显示数据的视图UITextView UILabel UIImageView UIWebView MKMapViews UIScrollView 可选择的视图(以下两个视图类实例都是模态显示的): UIAlertView...UIViewController实例负责设置视图的外观和它显示的视图。 UINavigationController类 1. 导航控制器使用内置动画在视图之间切换; 2....作为弹出回上一级视图控制器的Back按钮是自动产生并处理的,无需用户干预。 3. 可使用popViewControllerAnimated:BOOL弹出当前视图控制器并向左显示前一个视图。 4....注意:对于导航栏定制,对定制实际标题的最简单方式时使用视图控制器而不是导航项的title属性: C代码   self.title = @"Hello";   self.title = [[[NSBundle...事件处理 如图所示,一般情况下,当一个视图不响应用户事件时,它会将事件传递给它的父视图。但是,当视图视图控制器管理时,它会将事件首先传递给视图控制器。

    5.1K50
    领券