第七章 Delegation and Text Input笔记

来源:互联网 发布:mac 清理软件残留 编辑:程序博客网 时间:2024/06/06 00:05


一,输入框

       UITextField,点击输入框,会弹出键盘,底层是基于first responder.


二,UIResponder

       1,UIWindow有一个firstResponder的属性,用于指定接收除了touch事件的其他事件;

       2,touch event发到用户触摸到的view

       3,touch event和其他event的处理对象可以不一致,一般的view不会去获取focus

       4,没有成为first responder也能接收touch事件

       

三,配置键盘的显示

       1,可以通过设置UITextField的属性来配置键盘的显示,这点和android类似

        2,可以配置键盘的属性,包括是否是数字键盘,是否有密码保护,自动纠错


四,代理

       类似于java的interface

       1,UITextField声明了一些代理的方法,比如点击reture键处理

       2,其他对象实现了这些代理方法

       3,设置其他对象为UITextField的代理

       4,UITextField会发送相关的消息到它的代理


五,protocol

        1,UITextField声明了协议,它的delegate实现了协议

        2,声明方法

             

@protocol UITextFieldDelegate <NSObject>@optional- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;- (void)textFieldDidBeginEditing:(UITextField *)textField;- (BOOL)textFieldShouldEndEditing:(UITextField *)textField;- (void)textFieldDidEndEditing:(UITextField *)textField;- (BOOL)textField:(UITextField *)textFieldshouldChangeCharactersInRange:(NSRange)rangereplacementString:(NSString *)string;- (BOOL)textFieldShouldClear:(UITextField *)textField;- (BOOL)textFieldShouldReturn:(UITextField *)textField;@end

       3,在代理中实现协议

             可以在代理类的头文件或者类扩展中实现

@interface BNRHypnosisViewController () <UITextFieldDelegate>@end
        

       4,协议有@optional选项,代理类可以不完全实现这里声明的方法

       5,设置UITextField类的代理

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">             textField delegate = self;</span>

            如何扩展类的声明方法?

六,使用Motion Effects

        1,可以使用设备中的传感器,比如加速传感器,用于判断哪个方向用力,比如摇一摇等

        2,UIInterpolatingMotionEffect可以实现移动的效果


七,main入口

        1,入口实现方法

              

int main(int argc, char *argv[]){@autoreleasepool {return UIApplicationMain(argc, argv,nil, NSStringFromClass([BNRAppDelegate class]));}}

       2,Main loop 无限循环,消息监听

       3,BNRAppDelegate是UIApplication的代理类,会收到application发出的方法

       4,UIApplicationMain的第四个参数是string? 它是如何创建对应的对象的? 类似于java的反射?

// oc中的反射机制 
    正常调用  CLASSA *a = [[CLASSA alloc] init];  [a CallFunc];   // 反射调用  Class cls = NSClassFromString(@"CLASSA");  id a= [[cls  alloc]  init];  SEL selector = NSSelectorFromString(@"CallFunc");  [a  performSelector:selector withObject:nil];


       5,application:didFinishLaunchingWithOptions:.是kick-off方法









0 0