• UIResponder


    1.- (nullable UIResponder*)nextResponder;

    返回接收者的下一个响应,如果没有就返回nil

    UIResponder类不自动存储和设置下一个响应者,而是默认返回nil。子类必须override这个方法来设置下一个响应者。

    UIView实现了这个方法,因为可以返回管理这个UIView的UIViewController或者它的父类;

    UIViewController实现了这个方法,返回UIViewController的View的父View;

    UIWindow发挥UIApplication对象;

    UIApplication返回nil

    2.- (BOOL)isFirstResponder  

    判断一个对象是否是第一响应者。

    3.- (BOOL)canBecomeFirstResponder  

    判断一个对象是否可以成为第一响应者。默认返回NO。

    如果一个响应对象通过这个方法返回YES,那么它成为了第一响应对象,并且可以接收触摸事件和动作消息。

    子类必须overrider这个方法才可以成为第一响应者。

    3.- (BOOL)becomeFirstResponder  

    如果接收者接受了第一响应者的状态就返回YES,拒绝了这个状态就返回NO。默认返回YES。

    子类可以override这个方法来更新状态或者执行一些行为,比如高亮选中项。

    一个响应对象只有当前响应者可以放弃第一响应者状态,并且新的响应者可以成为第一响应者,才能成为第一响应对象。

    4.- (BOOL)canResignFirstResponder  

    如果一个对象可以放弃对象响应者就返回YES。默认返回YES。

    5.- (BOOL)resignFirstResponder  

    默认实现返回YES,放弃第一响应状态。子类可以override这个方法来更新状态或者执行一些行为,比如取消高亮选中项。 

    如果返回NO,拒绝放弃第一响应状态。

    如果你override这个方法,必须调用父类的实现[super resignFirstResponder].

    6.- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;
    - (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;
    - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;
    - (void)touchesCancelled:(nullable NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;
    - (void)touchesEstimatedPropertiesUpdated:(NSSet * _Nonnull)touches NS_AVAILABLE_IOS(9_1);
    
    - (void)pressesBegan:(NSSet<UIPress *> *)presses withEvent:(nullable UIPressesEvent *)event NS_AVAILABLE_IOS(9_0);
    - (void)pressesChanged:(NSSet<UIPress *> *)presses withEvent:(nullable UIPressesEvent *)event NS_AVAILABLE_IOS(9_0);
    - (void)pressesEnded:(NSSet<UIPress *> *)presses withEvent:(nullable UIPressesEvent *)event NS_AVAILABLE_IOS(9_0);
    - (void)pressesCancelled:(NSSet<UIPress *> *)presses withEvent:(nullable UIPressesEvent *)event NS_AVAILABLE_IOS(9_0);
    
    - (void)motionBegan:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event NS_AVAILABLE_IOS(3_0);
    - (void)motionEnded:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event NS_AVAILABLE_IOS(3_0);
    - (void)motionCancelled:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event NS_AVAILABLE_IOS(3_0);

    其中touches开头的方法是触摸事件相关的方法;

    presses开头的方法,是iOS9加入的给iPhone6s等支持Deep Press功能的设备使用的相关方法;

    motion开头的则是给设备的陀螺仪和加速传感器使用的方法,用于获取晃动等事件。

    7.- (void)remoteControlReceivedWithEvent:(nullable UIEvent *)event NS_AVAILABLE_IOS(4_0);
    接收到一个远程控制事件。比如耳机控制。
    允许传递远程控制事件,必须调用UIApplication的beginReceivingRemoteControlEvents方法;
    关闭远程控制,调用endReceivingRemoteControlEvents。
    8.- (BOOL)canPerformAction:(SEL)action withSender:(nullable id)sender NS_AVAILABLE_IOS(3_0);

    是的如果发现的命令行动应该启用或如果它不应该被禁用。是的意味着你的类可以返回处理当前上下文中的命令。

    9.- (nullable id)targetForAction:(SEL)action withSender:(nullable id)sender NS_AVAILABLE_IOS(7_0);

    允许将一个操作转发到另一个目标。默认情况下检查-canPerformAction:withSender:返回自我,或响应者链。

    10.@property(nullable, nonatomic,readonly) NSUndoManager *undoManager NS_AVAILABLE_IOS(3_0);
    返回在响应链中最近的共享undo manager。
    默认的,每个应用程序的window都有一个undo manager:a shared object for managing undo and redo operations.然而,在响应链中任何对象的类都有它们自己的undo manager,
    11.@property (nullable,nonatomic,readonly) NSArray<UIKeyCommand *> *keyCommands NS_AVAILABLE_IOS(7_0); 

    支持外部键盘得到数组

    12.@property (nullable, nonatomic, readonly, strong) __kindof UIView *inputView NS_AVAILABLE_IOS(3_2);
    @property (nullable, nonatomic, readonly, strong) __kindof UIView *inputAccessoryView NS_AVAILABLE_IOS(3_2);
    @property(nonatomic, readonly, retain) UIView *inputAccessoryView
    @property(nonatomic, readonly, retain) UIInputViewController *inputAccessoryViewController

    这两个属性提供一个视图(或视图控制器)用于替代为UITextField和UITextView弹出的系统键盘。我们可以在子类中将这两个属性重新定义为读写属性来设置这个属性。如果我们需要自己写一个键盘的,如为输入框定义一个用于输入身份证的键盘(只包含0-9和X),则可以使用这两个属性来获取这个键盘。

    13.@property (nullable, nonatomic, readonly, strong) UITextInputMode *textInputMode NS_AVAILABLE_IOS(7_0);

    返回的语言类型

    14.@property (nullable, nonatomic, readonly, strong) NSString *textInputContextIdentifier NS_AVAILABLE_IOS(7_0);

    保存这个语言还是什么的。没弄懂

    15.+ (void)clearTextInputContextIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(7_0);

    这个调用是删除不再需要存储应用程序标识符状态

    16.- (void)reloadInputViews NS_AVAILABLE_IOS(3_2);

    如果称为对象第一响应者,重新加载视图,另inputAccessoryView,textInputMode。否则忽略

    17.@interface NSObject(UIResponderStandardEditActions)   // these methods are not implemented in NSObject
    
    - (void)cut:(nullable id)sender NS_AVAILABLE_IOS(3_0);
    - (void)copy:(nullable id)sender NS_AVAILABLE_IOS(3_0);
    - (void)paste:(nullable id)sender NS_AVAILABLE_IOS(3_0);
    - (void)select:(nullable id)sender NS_AVAILABLE_IOS(3_0);
    - (void)selectAll:(nullable id)sender NS_AVAILABLE_IOS(3_0);
    - (void)delete:(nullable id)sender NS_AVAILABLE_IOS(3_2);
    - (void)makeTextWritingDirectionLeftToRight:(nullable id)sender NS_AVAILABLE_IOS(5_0);
    - (void)makeTextWritingDirectionRightToLeft:(nullable id)sender NS_AVAILABLE_IOS(5_0);
    - (void)toggleBoldface:(nullable id)sender NS_AVAILABLE_IOS(6_0);
    - (void)toggleItalics:(nullable id)sender NS_AVAILABLE_IOS(6_0);
    - (void)toggleUnderline:(nullable id)sender NS_AVAILABLE_IOS(6_0);
    
    - (void)increaseSize:(nullable id)sender NS_AVAILABLE_IOS(7_0);
    - (void)decreaseSize:(nullable id)sender NS_AVAILABLE_IOS(7_0);
    
    @end

    所有的继承自UIResponder的类都包含这这个菜单,这些方法在UIResponderStandardEditActions协议中声明。如果在一个视图中重写UIResponderStandardEditActions的方法,就会修改对应的Menu菜单

    例子:

    - (BOOL)canPerformAction:(SEL)action withSender:(id)sender  
    {  
        if (action == @selector(copy:))  
            return NO;  
          
        return [super canPerformAction:action withSender:sender];  
    } 

    UIKeyCommand

    1.@property (nonatomic,readonly) NSString *input;

    你需要识别的关键字,或正确的箭头和退出键,本身并不包含字符。可用常数是:

    • UIKeyInputUpArrow
    • UIKeyInputDownArrow
    • UIKeyInputLeftArrow
    • UIKeyInputRightArrow
    • UIKeyInputEscape
    2.@property (nonatomic,readonly) UIKeyModifierFlags modifierFlags;

    一个或多个 UIKeyModifierFlags,描述了需要与 input 键同时使用的键:

    • .Command.Alternate.Shift.Control:分别表示 Command, Option, Shift, 和 Control 键。
    • .NumericPad:表示 input 应该来自数字键盘,而不是标准键盘的最上面一行。
    • .AlphaShift:表示大小写锁定键是否作为按键组合的一部分 (大写状态)。
    3.@property (nullable,nonatomic,copy) NSString *discoverabilityTitle NS_AVAILABLE_IOS(9_0);

    一个可选的标签,用来在发现层显示快捷键命令。只有设置了标题的键盘命令才会被列出。

    4.+ (UIKeyCommand *)keyCommandWithInput:(NSString *)input modifierFlags:(UIKeyModifierFlags)modifierFlags action:(SEL)action;

    调用方法传入相应参数

    支持User Activities

    从iOS 8起,苹果为我们提供了一个非常棒的功能,即Handoff。使用这一功能,我们可以在一部iOS设备的某个应用上开始做一件事,然后在另一台iOS设备上继续做这件事。Handoff的基本思想是用户在一个应用里所做的任何操作都可以看作是一个Activity,一个Activity可以和一个特定iCloud用户的多台设备关联起来。在编写一个支持Handoff的应用时,会有以下三个交互事件:

    1. 为将在另一台设备上继续做的事创建一个新的User Activity;
    2. 当需要时,用新的数据更新已有的User Activity;
    3. 把一个User Activity传递到另一台设备上。

    为了支持这些交互事件,在iOS 8后,UIResponder类新增了几个方法,我们在此不讨论这几个方法的实际使用,想了解更多的话,可以参考 iOS 8 Handoff 开发指南 。我们在此只是简单描述一下这几个方法。

    1.@property(nonatomic, retain) NSUserActivity *userActivity

    在UIResponder中,已经为我们提供了一个userActivity属性,它是一个NSUserActivity对象。因此我们在UIResponder的子类中不需要再去声明一个userActivity属性,直接使用它就行

    由UIKit管理的User Activities会在适当的时间自动保存。一般情况下,我们可以重写UIResponder类的updateUserActivityState:方法来延迟添加表示User Activity的状态数据。当我们不再需要一个User Activity时,我们可以设置userActivity属性为nil。任何由UIKit管理的NSUserActivity对象,如果它没有相关的响应者,则会自动失效。

    2.- (void)updateUserActivityState:(NSUserActivity *)activity

    上面提到的updateUserActivityState:是用于更新给定的User Activity的状态

    子类可以重写这个方法来按照我们的需要更新给定的User Activity。我们需要使用NSUserActivity对象的addUserInfoEntriesFromDictionary:方法来添加表示用户Activity的状态。

    3.- (void)restoreUserActivityState:(NSUserActivity *)activity

    在我们修改了User Activity的状态后,如果想将其恢复到某个状态

    子类可以重写这个方法来使用给定User Activity的恢复响应者的状态。系统会在接收到数据时,将数据传递给application:continueUserActivity:restorationHandler:以做处理。我们重写时应该使用存储在user activity的userInfo字典中的状态数据来恢复对象。当然,我们也可以直接调用这个方法。

    参考链接:http://www.tuicool.com/articles/E3UBJj3

    http://www.cocoachina.com/ios/20150115/10926.html

  • 相关阅读:
    《Java程序设计》终极不改版【下】
    《Java程序设计》终极不改版【下】
    !终端伪装测试之fuck校园网
    !终端伪装测试之fuck校园网
    关于js中单双引号以及转义符的理解
    关于js中单双引号以及转义符的理解
    关于js中单双引号以及转义符的理解
    正则表达式【第二卷】
    正则表达式【第二卷】
    正则表达式【第二卷】
  • 原文地址:https://www.cnblogs.com/hxwj/p/5217027.html
Copyright © 2020-2023  润新知