ios 笔记


1
2
3
4
5
6
7
8
//- (UIResponder *)nextResponder
返回调用该方法的对象下一个接收事件的对象,如果没有对象那就返回nil
//- (BOOL)resignFirstResponder 
让调用对象在当前窗口失去事件首对象状态。当方法运行实现默认返回YES,取消事件首对象状态。子类可以从写这个方法用来更新状态或者取消高亮选择,或者f返回NO,来拒绝取消事件首选项。
//- (BOOL)isFirstResponder   
返回一个布尔变量表示调用给方法的对象是否是首对象。如果调用该方法的对下功能是首对象那就返回YES,不然就返回NO
// - (BOOL)canResignFirstResponder
//返回一个布尔值指示调用该方法的对象是否取消了第一响应对象的状态。如果调用对象可以取消首响应对象状态就返回YES,不然返回NO 举个例子,一个文本框如果返回了NO那他就会强制结束用户的编辑。
IOS-- UIView中的坐标转换
1
2
3
4
5
6
7
8
9
// 将像素point由point所在视图转换到目标视图view中,返回在目标视图view中的像素值
- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view;
// 将像素point从view中转换到当前视图中,返回在当前视图中的像素值
- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view;
              
// 将rect由rect所在视图转换到目标视图view中,返回在目标视图view中的rect
- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view;
// 将rect从view中转换到当前视图中,返回在当前视图中的rect
- (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view;

delegate的使用

delegate其实和java中的jie'ko接口是类似的原理,wei't委托别人去实现他方法的细节,,自己zh只是实现方法d的chan'she产生

例如:classA产生classADelegae 方法 ,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
在h文件中产生delegate
@protocol SelectBankDelegate <NSObject>
        
-(void)setBankName:(NSString *)bankName  withKey:(NSString *)key;
    id<SelectBankDelegate>      delegate;
        
@property (nonatomic, assign) id<SelectBankDelegate> delegate;
然后在m文件中调用:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (tableView == _searchDisplayVC.searchResultsTableView)
    {
        NSLog(@"key:%@--value:%@",[keysArray objectAtIndex:indexPath.row],[_searchResultArray objectAtIndex:indexPath.row]);
        if (delegate) {
            [delegate setBankName:[_searchResultArray objectAtIndex:indexPath.row] withKey:[keysArray objectAtIndex:indexPath.row]];
        }
    }
}
tableview实现点击方法,
然后在m另一个文件实现他方法的编写
-(void)setBankName:(NSString *)bankName  withKey:(NSString *)key{
//    NSLog(@"%@%@",bankName,key);
    bankNameField_.text = bankName;
    bankcode = key;
    UserInfoCell *cell = (UserInfoCell *)bankNameField_.superview.superview;
    cell.imageView.image = [UIImage imageNamed:@"apply_button_right.png"];
}
完成dedelegate的调用实现,

ios 实现 数据的传递也可以整个对象的形式传递过去:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
先定义个info.h类
@interface info : NSObject{
    NSString *text1;
    NSString *tetx2;
}
    
@property(nonatomic,retain)NSString *text1;
@property(nonatomic,retain)NSString *text2;
    
然后在一个页面要把数据传递到另一个页面,因此在view中或得到的值包装成一个对象
.h
#import "info.h"
@interface ViewView : UIView
@property (retain, nonatomic) IBOutlet UILabel *label1;
@property (retain, nonatomic) IBOutlet UILabel *label2;
    
-(info *)getInfo;
.m
- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
            
        _label1=[[UILabel alloc]initWithFrame:CGRectMake(30, 30, 50, 40)];
        _label1.text=@"aaa";
        [self addSubview:_label1];
            
            
        _label2=[[UILabel alloc]initWithFrame:CGRectMake(30, 100, 50, 40)];
        _label2.text=@"bbb";
        [self addSubview:_label2];
    }
    return self;
}
-(info *)getInfo{
    info *infoText=[[info alloc]init];
    infoText.text1=_label1.text;
    infoText.text2=_label2.text;
    return infoText;
}
最后把view的对象传递给另一个view1就可以了,在view1中实现
 ViewView *view=[[ViewView alloc]initWithFrame:self.view.bounds];
    [self.view addSubview:view];
    NSLog(@"-------%@,----------%@",view.getInfo.text1,view.getInfo.text2);
,实现数据传递

view  实现手势chan长按方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//创建长按手势监听
    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
                                               initWithTarget:self
                                               action:@selector(myHandleTableviewCellLongPressed:)];
//    longPress.delegate = self;
    longPress.minimumPressDuration = 1.0;
    //将长按手势添加到需要实现长按操作的视图里
    [gridView addGestureRecognizer:longPress];
    [longPress release];
  
//长按事件的手势监听实现方法
- (void) myHandleTableviewCellLongPressed:(UILongPressGestureRecognizer *)gestureRecognizer {
    if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
        NSLog(@"UIGestureRecognizerStateBegan");
    }
    if (gestureRecognizer.state == UIGestureRecognizerStateChanged) {
        NSLog(@"UIGestureRecognizerStateChanged");
    }
      
    if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
        NSLog(@"UIGestureRecognizerStateEnded");
    }
}

今天先就这些了,多多总结,才能进步。come on!


原文地址:https://www.cnblogs.com/zhangsongbai/p/3102593.html