ios学习之个人总结

2024-06-17

ios学习之个人总结(通用2篇)

篇1:ios学习之个人总结

1、初始化WebView

- (void)viewDidLoad

{

[super viewDidLoad];

webView = [[UIWebView alloc] initWithFrame.:CGRectMake(0, 0, 320, 480)];

NSURLRequest *request =[NSURLRequest requestWithURL:[NSURL URLWithString:@www.baidu.com]];

[self.view addSubview: webView];

[webView loadRequest:request];

}

2、

实现协议,在ViewController.h修改如下

#import

@interface ViewController : UIViewController

{

UIWebView *webView;

}

@end

UIWebView中几个重要的函数

1.- (void )webViewDidStartLoad:(UIWebView *)webView 网页开始加载的时候调用

2.- (void )webViewDidFinishLoad:(UIWebView *)webView 网页加载完成的时候调用

3.- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 网页加载错误的时候调用

先在viewDidLoad 的webView实例化下面加上

[webView setDelegate:self];设置代理,这样上面的三个方法才能得到回调。

3、加载等待页面

- (void) webViewDidStartLoad:(UIWebView *)webView

{

//创建UIActivityIndicatorView背底半透明View

UIView *view = [[UIView alloc] initWithFrame.:CGRectMake(0, 0, 320, 480)];

[view setTag:108];

[view setBackgroundColor:[UIColor blackColor]];

[view setAlpha:0.5];

[self.view addSubview:view];

activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame.:CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)];

[activityIndicator setCenter:view.center];

[activityIndicator setActivityIndicatorViewStyle.:UIActivityIndicatorViewStyleWhite];

[view addSubview:activityIndicator];

[activityIndicator startAnimating];

}

加载完成或失败时,去掉loading效果

- (void) webViewDidFinishLoad:(UIWebView *)webView

{

[activityIndicator stopAnimating];

UIView *view = (UIView*)[self.view viewWithTag:108];

[view removeFromSuperview];

NSLog(@webViewDidFinishLoad);

}

- (void) webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error

{

[activityIndicator stopAnimating];

UIView *view = (UIView*)[self.view viewWithTag:108];

[view removeFromSuperview];

}

篇2:ios学习之个人总结

触摸事件

手势识别

手机摇晃

一、iOS的输入事件

触摸事件(滑动、点击)

运动事件(摇一摇、手机倾斜、行走),不需要人为参与的

远程控制事件(耳机控制手机声音)

1⃣️iOS事件对象都是UIEvent类的实例

UIEvent类对事件类型定义了enum常量:

typedef NS_ENUM(NSInteger, UIEventType){

UIEventTypeTouches,

UIEventTypeMotion,

UIEventRemoteControl,

};

触摸事件必须是继承UIResponser的

二、触摸事件

1⃣️UIView,有4种处理不同的触摸事件

UIView是UIResponder的子类,可以覆盖下列4个方法处理不同的触摸事件,

1. 一根或者多根手指开始触摸屏幕

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

2.一根或者多根手指在屏幕上移动(随着手指的移动,会持续调用该方法)

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

3.一根或者多根手指离开屏幕

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

4.触摸结束前,某个系统事件(例如电话呼入)会打断触摸过程

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event

复制代码

#pragma mark - UITouch事件

#pragma mark 触摸开始

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

NSLog(@“触摸开始”);

for (UITouch *touch in touches) {

NSLog(@“%@”, touch);

}

}

#pragma mark 触摸移动

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

{

NSLog(@“触摸移动Touch对象个数:%d”,[touches count]);

// 要移动界面上黄颜色的视图

// 1. 得到当前手指的位置

UITouch *touch = [touches anyObject];

CGPoint location = [touch locationInView:self.view];

// 2. 得到上一次手指的位置

CGPoint preLocation = [touch previousLocationInView:self.view];

// 3. 计算两个位置之间的偏移

CGPoint ffset = CGPointMake(location.x - preLocation.x, location.y - preLocation.y);

// 4. 使用计算出来的偏移量,调整视图的位置

[_demoView setCenter:CGPointMake(_demoView.center.x + offset.x, _demoView.center.y + offset.y)];

// 完整的UITouch事件调试方法

NSLog(@“触摸移动”);

for (UITouch *touch in touches) {

NSLog(@“%@”, touch);

}

}

#pragma mark 触摸结束

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

{

// 完整的UITouch事件调试方法

NSLog(@“触摸完成”);

for (UITouch *touch in touches) {

NSLog(@“%@”, touch);

}

}

#pragma mark 触摸中断

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event

{

// 完整的UITouch事件调试方法

NSLog(@“触摸中断”);

for (UITouch *touch in touches) {

NSLog(@“%@”, touch);

}

}

复制代码

2⃣️触摸事件的处理

如果hit-test视图无法处理事件,则通过响应者链向上传递

1.如果hit-test视图的控制器存在,就传递给控制器;如果控制器不存在,则将其传递给它的父视图

2.如果视图或它的控制器无法处理收到的事件或消息,则将其传递给该视图的父视图

3.每一个在视图继承树中的上层视图如果不能处理收到的事件或消息,则重复上面的步骤1,2

4.在视图继承树的最上层视图,如果也不能处理收到的事件或消息,则其将事件或消息传递给窗口对象进行处理

5. 如果窗口对象也不能进行处理,则其将事件或消息传递给UIApplication对象

6.如果UIApplication也不能处理该事件或消息,则将其丢弃

当用户点击屏幕时,会产生一个UITouch对象传递给UIApplication,然后由window负责查找最适合相应触摸事件的视图对象(hitTest,pointInside)

找到合适的视图之后,Touch方法由对应的视图完成,上级视图不再接管

3⃣️不接受处理事件的三种方法

不接收用户交互:userInteractionEnabled = NO;

隐藏:hidden = YES;

透明:alpha = 0~0.01

三、手势识别

1⃣️iOS目前支持的手势识别(6种)

UITapGestureRecognizer(点按)

UIPinchGestureRecognizer(捏合)

UIPanGestureRecognizer(拖动)

UISwipeGestureRecognizer(轻扫)

UIRotationGestureRecognizer(旋转)

UILongPressGestureRecognizer(长按)

2⃣️手势识别的使用方法(4步)

通常在视图加载的时候定义(UIGestureRecognizer是抽象类,需要实例化使用)

创建手势识别实例

设置手势识别属性,例如手指数量,方向等

将手势识别附加到指定的视图之上

编写手势触发响应方法

3⃣️手势识别的状态(7个)

1.// 没有触摸事件发生,所有手势识别的默认状态

UIGestureRecognizerStatePossible,

// 一个手势已经开始但尚未改变或者完成时

UIGestureRecognizerStateBegan,

// 手势状态改变

UIGestureRecognizerStateChanged,

// 手势完成

UIGestureRecognizerStateEnded,

// 手势取消,恢复至Possible状态

UIGestureRecognizerStateCancelled,

// 手势失败,恢复至Possible状态

UIGestureRecognizerStateFailed,

// 识别到手势识别

UIGestureRecognizerStateRecognized =UIGestureRecognizerStateEnded

2.手势识别的属性

state——手势状态

view——手势发生视图

常用方法

locationInView 获得手势发生对应视图所在位置

复制代码

- (void)viewDidLoad

{

[super viewDidLoad];

/**

1. 演示点按手势

*/

// 根据实例化方法,我们知道:

// 1.有一个处理消息的对象,应该是self

// 2.我们需要定义一个方法,当手势识别检测到的时候,运行

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAction:)];

// setNumberOfTapsRequired 点按次数

[tap setNumberOfTapsRequired:1];

// setNumberOfTouchesRequired 点按的手指数量

[tap setNumberOfTouchesRequired:1];

// 把手势识别增加到视图上

[self.demoView addGestureRecognizer:tap];

上一篇:财务解读慈善法下一篇:农村个人宅基地申请书