IOS ScrollView滚动控件使用
2015-01-09 20:15
375 查看
1.ScrollView概述:
ScrollView是UIScrollView类,是容器类型的视图。
它有两个子类: UITextView和UITableView,它们在内容超出屏幕时提供水平或垂直滚动条。
2.其包含3个属性:
contentSize:表示SCrollView中的内容视图
contentInset:用于在ScrollView中的内容视图周边添加边框,这往往为了留出空白以放置工具栏、标签或导航栏等
contentOffset:内容视图坐标原点与ScrollVIew坐标原点的偏移量。
下面我们以一个实例来进行对ScrollView的初步学习:
主要完成:基本视图构造、点击文本框出现键盘之后,让文本框自动滚动到键盘之上、点击键盘上return button后关闭键盘。
·以上为实现图,下面进行过程分析。
(1)构造基本视图:包括三个按钮以及一个文本框(其中一个按钮超出视图屏幕范围,需要下滑才能看到)
注意ScrollView中的全部控件都要调成绝对定位,与上边框的距离为绝对距离。这样他们的y坐标才不会因为之后调节了父视图(ScrollView)的高度后发生变化。
(2)为ScrollView与TextField控件添加输出口
(3)在ViewController.m中加入以下代码:
第二个函数:恢复尺寸
当然,这里对于以上两个定义的函数,目前还没有任何作用,因为没人调用它,它也不会被触发(是自己定义的函数)
下面在视图WillAppear与viewWillDisappear时调用这两个函数,以实现相应的功能:
同时注意,这里还需要注册键盘出现隐藏的通知(以及接触)
注册之后,当发生相应行为(这里指键盘出现与隐藏)时,就会去调用你实现的函数
至此,对于次ScrollView的使用完成。
对于IOS程序,其中的协议代理、自动触发函数、自定义函数,在一开始理解时比较混乱,不知道什么函数在什么时间被调用,如何设置等,在学习了这个程序之后希望跟我有一样问题的初学者可以稍微明白点。。。
ScrollView是UIScrollView类,是容器类型的视图。
它有两个子类: UITextView和UITableView,它们在内容超出屏幕时提供水平或垂直滚动条。
2.其包含3个属性:
contentSize:表示SCrollView中的内容视图
contentInset:用于在ScrollView中的内容视图周边添加边框,这往往为了留出空白以放置工具栏、标签或导航栏等
contentOffset:内容视图坐标原点与ScrollVIew坐标原点的偏移量。
下面我们以一个实例来进行对ScrollView的初步学习:
主要完成:基本视图构造、点击文本框出现键盘之后,让文本框自动滚动到键盘之上、点击键盘上return button后关闭键盘。
·以上为实现图,下面进行过程分析。
(1)构造基本视图:包括三个按钮以及一个文本框(其中一个按钮超出视图屏幕范围,需要下滑才能看到)
注意ScrollView中的全部控件都要调成绝对定位,与上边框的距离为绝对距离。这样他们的y坐标才不会因为之后调节了父视图(ScrollView)的高度后发生变化。
(2)为ScrollView与TextField控件添加输出口
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView; @property (weak, nonatomic) IBOutlet UITextField *textField;
(3)在ViewController.m中加入以下代码:
@implementation ViewController{ BOOL keyboardVisible; }声明变量: 键盘打开标识
- (void)viewDidLoad { [super viewDidLoad]; self.scrollView.contentSize = CGSizeMake(320,700); self.textField.delegate = self; //实现了UITextFieldDelegate协议,这里把委托设置为自身。 }这个是视图加载时自动触发的一个函数:设置了ScrollView得大小,以及设置了委托
//Asks the delegate if the text field should process the pressing of the return button. //说明,当按下return button按钮时,隐藏键盘 - (BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return YES; }在按下键盘上return button按钮时触发的一个函数,实现关闭按钮操作
-(void) keyboardDidShow:(NSNotification *)notif{ if(keyboardVisible){ return ; } //获得键盘尺寸 NSDictionary * info = [notif userInfo]; NSValue *avalue = [info objectForKey:UIKeyboardFrameEndUserInfoKey]; CGSize keyboardSize = [avalue CGRectValue].size; //重新定义ScrollView的尺寸 CGRect viewFrame = self.scrollView.frame; viewFrame.size.height -= (keyboardSize.height); self.scrollView.frame = viewFrame; //滚动到当前文本框 CGRect textFieldRect = [self.textField frame]; [self.scrollView scrollRectToVisible:textFieldRect animated:YES]; keyboardVisible = YES; } -(void) keyboardDidHide: (NSNotification *)notif { NSDictionary* info = [notif userInfo]; NSValue* aValue = [info objectForKey:UIKeyboardFrameEndUserInfoKey]; CGSize keyboardSize = [aValue CGRectValue].size; CGRect viewFrame = self.scrollView.frame; viewFrame.size.height += keyboardSize.height; self.scrollView.frame = viewFrame; if (!keyboardVisible) { return; } keyboardVisible = NO; }第一个函数:当键盘出现时,获取键盘尺寸,重新定义ScrollView的尺寸,并且滚动到当前文本框
第二个函数:恢复尺寸
当然,这里对于以上两个定义的函数,目前还没有任何作用,因为没人调用它,它也不会被触发(是自己定义的函数)
下面在视图WillAppear与viewWillDisappear时调用这两个函数,以实现相应的功能:
//视图方法 -(void) viewWillAppear:(BOOL)animated { //注册键盘出现通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (keyboardDidShow:) name: UIKeyboardDidShowNotification object:nil]; //注册键盘隐藏通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (keyboardDidHide:) name: UIKeyboardDidHideNotification object:nil]; [super viewWillAppear:animated]; } -(void) viewWillDisappear:(BOOL)animated { //解除键盘出现通知 [[NSNotificationCenter defaultCenter] removeObserver:self name: UIKeyboardDidShowNotification object:nil]; //解除键盘隐藏通知 [[NSNotificationCenter defaultCenter] removeObserver:self name: UIKeyboardDidHideNotification object:nil]; [super viewWillDisappear:animated]; }
同时注意,这里还需要注册键盘出现隐藏的通知(以及接触)
注册之后,当发生相应行为(这里指键盘出现与隐藏)时,就会去调用你实现的函数
至此,对于次ScrollView的使用完成。
对于IOS程序,其中的协议代理、自动触发函数、自定义函数,在一开始理解时比较混乱,不知道什么函数在什么时间被调用,如何设置等,在学习了这个程序之后希望跟我有一样问题的初学者可以稍微明白点。。。
相关文章推荐
- ios storyboard scrollView 拖拽控件后无法滚动
- iOS 9应用开发教程之使用开关滑块控件以及滚动部署视图
- Android垂直滚动控件ScrollView使用方法详解
- 【Android 开发】:UI控件之 ScrollView垂直滚动控件 和 HorizontalScrollView水平滚动控件的使用
- iOS 9应用开发教程之使用开关滑块控件以及滚动部署视图
- ios 中使用xib拖拽的scrollview中子控件位置偏移
- Android之ScrollView滚动布局控件使用以及显示新闻网页
- UI控件之 ScrollView垂直滚动控件 和 HorizontalScrollView水平滚动控件的使用
- iOS的ScrollView包含TableView使用AutoLayout实现滚动
- IOS的基本控件的使用-UIScrollView滚动视图的高级功能
- [Android] ScrollView 垂直滚动控件和 HorizontalScrollView 水平滚动控件的使用
- 屏幕滚动控件ScrollView的使用
- HorizontalScrollView水平滚动控件使用方法详解
- IOS scrollView与键盘结合使用--防止遮盖控件
- 安卓控件使用系列22:ScrollView垂直滚动控件的使用方法
- 【iOS发展-53】实例探究:scrollView使用方法和解决方案无法滚动核心
- iOS 9应用开发教程之使用开关滑块控件以及滚动部署视图
- iOS - 支持水平 / 垂直显示自动滚动的跑马灯控件 --- SKAutoScrollLabel 的使用和实现
- ScrollView垂直滚动控件的使用
- 使用javascript编写的可编辑表格控件(支持汇总,滚动,增行,删行)