рд╣реВрдкрд░ рдХреЗ рд╕рд╛рде рдЖрдИрдУрдПрд╕ рдмрдЧ рдХрд╛ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░реЗрдВ

рдирдорд╕реНрдХрд╛рд░! рдореЗрд░рд╛ рдирд╛рдо рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░ рдирд┐рдХрд┐рд╢рд┐рди рд╣реИ, рдореИрдВ рдмреБрд╢ рдореЗрдВ iOS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рд╣рдордиреЗ UIKit рдореЗрдВ рдПрдХ рдмрдЧ рдХреА рдЬрд╛рдВрдЪ рдХреА, рдЬрд┐рд╕реЗ Apple рдЫрд╣ рдорд╣реАрдиреЗ рддрдХ рдареАрдХ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред



рдпрд╣ рд╕рдм рдЕрдЧрд╕реНрдд 2019 рдореЗрдВ рдЖрдИрдУрдПрд╕ 13. рдХреЗ рдкрд╣рд▓реЗ рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖ рдерд╛, рддрдм рд╣рдореЗрдВ рдкрд╣рд▓реА рдмрд╛рд░ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдмреЗрде рдФрд░ рдмрдореНрдмрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рд╣рдо рд▓рдЧрд╛рддрд╛рд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╕реБрдзрд╛рд░ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдпрдерд╛рд╕рдВрднрд╡ рдердХрд╛рдК рдФрд░ рдмрд┐рдирд╛ рдкрдВрдЬреАрдХрд░рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд▓рд┐рдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреАрдмреЛрд░реНрдб рдХреЗ рдКрдкрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рднрд╡рд┐рд╖реНрдп рдХрд╣рдиреЗрд╡рд╛рд▓рд╛ рдЯреВрд▓рдЯрд┐рдкреНрд╕ рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдИрдУрдПрд╕ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдирдХрд░ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ рдлреЛрди рдирдВрдмрд░ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд╕рдВрдХреЗрдд рджрд┐рдП рдЧрдП рдереЗред



рдЬрдм рдЬреАрдПрдо рд╕рдВрд╕реНрдХрд░рдг рд╕рд╛рдордиреЗ рдЖрдпрд╛, рддреЛ рд╣рдордиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рдирд╣реАрдВ рд╣реБрдИ рдереАред рдпрд╣ рд╣рдореЗрдВ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдмрдЧ рдХреЛ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдЧрдорди рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдпрд╛рдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╕рдВрднрд╡рддрдГ Apple рдиреЗ рдЕрдкрдиреЗ рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░ рдореЗрдВ рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рд╣рдо рдкрд╣рд▓реЗ рдмрдбрд╝реЗ рдЕрдкрдбреЗрдЯ рдкреИрдХреЗрдЬ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рд▓рдЧреЗред рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЖрд╢рд╛ рд╡реНрдпрдХреНрдд рдХреА рдпрд╣ ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдВрд╕реНрдХрд░рдг 13.1 рдХреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде, рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд░рдбрд╛рд░ рдЦреЛрд▓рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рдерд╛, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЕрдХреНрдЯреВрдмрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрд┐рдпрд╛ рдерд╛ред рд╕рдордп рдмреАрдд рдЧрдпрд╛, рдЖрдИрдУрдПрд╕ 13.2 рдФрд░ 13.3 рдмрд╛рд╣рд░ рдЖ рдЧрдпрд╛, рдФрд░ рдмрдЧ рдЕрднреА рднреА рдареАрдХ рдирд╣реАрдВ рд╣реБрдЖред

рдлрд░рд╡рд░реА рдореЗрдВ, рд╣рдорд╛рд░реА рдкрдВрдЬреАрдХрд░рдг рдЯреАрдо рдХреЛ рдмреИрдХрд▓реЙрдЧ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдХреБрдЫ рдЦрд╛рд▓реА рд╕рдордп рдорд┐рд▓рд╛, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреА рдереЛрдбрд╝реА рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдЦреБрджрд╛рдИ рд╢реБрд░реВ рдХрд░реЗрдВ, рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдерд╛ рдХрд┐ рдЗрд╕реЗ рдХрд┐рд╕ рддрд░реАрдХреЗ рд╕реЗ рдХрд░рдирд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╕рдВрдХреЗрдд рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреАрдмреЛрд░реНрдб рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рдереЗ, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛ рдХрд┐ рдЖрдИрдУрдПрд╕ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдЬрд╛рдПред


iOS 12 рдмрдирд╛рдо iOS 13

рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ iOS 13 рдореЗрдВ Apple рдиреЗ рдХреАрдмреЛрд░реНрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдПрдХ рдЕрд▓рдЧ рдирд┐рдпрдВрддреНрд░рдХ ( UIPredictionViewController) рдореЗрдВ рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдпрд╛ ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдореЙрдбрд░реНрдирд╛рдЗрдЬреЗрд╢рди рдФрд░ рдЕрдкрдШрдЯрди рдХреА рдУрд░ рд░реБрдЭрд╛рди рднреА рдЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рд╣реИ (рд╡реИрд╕реЗ, рдЕрд░реНрдЯрд┐рдУрдо рд▓реЛрдиреНрдХреЛ рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд╣рдорд╛рд░реЗ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереА )ред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рдерд╛ред рдЦреЛрдЬреЛрдВ рдХрд╛ рдШреЗрд░рд╛ рд╕рдВрдХреАрд░реНрдг рд╣реЛрдиреЗ рд▓рдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдИрдУрдПрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрди рдореЗрдВ рдирд┐рдЬреА рд╕рд┐рд╕реНрдЯрдо рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЦреЛрдЬрдирд╛ рдЖрд╕рд╛рди рд╣реИ: рдмрд╕ рдЦреЛрдЬ рдЗрдВрдЬрди рдореЗрдВ рдПрдХ рдХреНрд╡реЗрд░реА рджрд░реНрдЬ рдХрд░реЗрдВред рдЖрдВрдЦ рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЕрдзреНрдпрдпрди рдореЗрдВ UIPredictionViewControllerрдЗрд╕рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ:



рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕реБрд░рд╛рдЧ рдерд╛, рдЬреЛ рдХрд┐ рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ рдЯреВрд▓ рд╕реНрдкреВрдлрд┐рдВрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛рд░реНрдпреЛрдВ (рд╕реНрд╡рд┐рдЬрд╝рд▓рд┐рдВрдЧ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рдВрдЪрдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ ред рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ "рд╢рдХ рдХреЗ рддрд╣рдд" рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрд╢рд╛ рд╕рд╣реА рдореВрд▓реНрдп рд▓реМрдЯрд╛рдП:

+(void)swizzleIsVisibleForInputDelegate {
    SEL targetSelector = sel_getUid("isVisibleForInputDelegate:inputViews:");
    Class targetClass = NSClassFromString(@тАЭUIPredictionViewControllerтАЭ);
    if (targetClass == nil) {
        return;
    }
    if (![targetClass instancesRespondToSelector:targetSelector]) {
        return;
    }

    Method method = class_getInstanceMethod(targetClass, targetSelector);
    if (method == NULL) {
        return;
    }

    IMP originalImplementation = method_getImplementation(method);
    IMP newImp = imp_implementationWithBlock(^BOOL(id me, id delegate, id views) {
        //   ,        . 
        BOOL result = ((bool (*)(id,SEL,id,id))originalImplementation)(me, targetSelector, delegate, views);
        if ([delegate isKindOfClass:[UITextField class]] && [delegate keyboardType] == UIKeyboardTypePhonePad) {
            return YES;
        }
        return result;
    });

    method_setImplementation(method, newImp);
}

рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдлреЛрди рдЖрдИрдУрдПрд╕ 13 рдореЗрдВ рд▓реМрдЯ рдЖрдпрд╛ рд╣реИ рдФрд░ "рд╕рд╛рдорд╛рдиреНрдп рдореЛрдб рдореЗрдВ" рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЬрд╛рдВрдЪ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╢рд╛рдпрдж рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рд░рд┐рд▓реАрдЬ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдореЗрдВ рдЗрд╕ рдЦрддрд░рдирд╛рдХ рдФрд░ рдирд┐рд╖рд┐рджреНрдз Apple рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо / рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде (рджреВрд░рд╕реНрде рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рдмрдВрдзрди рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП, рдЖрдк рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧреА рдХрддреЗрд░реАрдирд╛ рдЯреНрд░реЛрдлрд┐рдореЗрдВрдХреЛ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреА рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ )ред рдлрд┐рд░ рднреА, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реБрдЖ рдХрд┐ рдЯреЗрд▓реАрдлреЛрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреАрдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреНрдпреЛрдВ рдЧрд▓рдд рд╣реИред

рд╕рддреНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, Apple iOS рдШрдЯрдХ рдХреЛрдб рдХреЛ рджрд╛рдПрдВ рдФрд░ рдмрд╛рдПрдВ рд╡рд┐рддрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ Google рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдмрд╛рдЗрдирд░реА рдХреЛрдб рдХреЛ рдбрд┐рдХрдВрдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╣реА рддрд░реАрдХрд╛ рдмрдЪрд╛ рд╣реИ - рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рд╣реЙрдкрд░ рдЬреИрд╕реЗ рдПрдХ рдЙрддреНрдкрд╛рдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдИ рдмрд╛рд░ рд╕реБрдирд╛ рдерд╛ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдЧрд╣рд░реА рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдИ рд▓реЗрдЦ рдкрдврд╝реЗ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдХрднреА рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдФрд░ рддреБрд░рдВрдд рдореБрдЭреЗ рд╕реБрдЦрдж рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ: рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЪрд╛рд░реЛрдВ рдУрд░ рдЦреЗрд▓рдиреЗ рдФрд░ рдЙрдкрдХрд░рдг рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рдЦрд░реАрджрдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдбреЗрдореЛ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЛ рдмрдЪрд╛рдиреЗ рдФрд░ рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЕрдВрддрд╣реАрди 30 рдорд┐рдирдЯ рдХреЗ рдХрд╛рд░реНрдп рд╕рддреНрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдордВрдЪ рд╣реИред

рд╕рдм рдЙрд╕реА рд╕реЗрдкреНрд░рдХрд╛рд╢рд┐рдд рдирд┐рдЬреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рдЖрдк UIPredictionViewControllerрдпрд╣ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ UIKitCore рдврд╛рдВрдЪреЗ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдХреНрдпрд╛ рд╣реИред рдЬреЛ рдХреБрдЫ рдмрдЪрддрд╛ рд╣реИ рд╡рд╣ рдЙрд╕реЗ рдвреВрдВрдврдирд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рд╣реЙрдкрд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рд╣реИред рдмрд╛рдЗрдирд░реА рдлреНрд░реЗрдорд╡рд░реНрдХ рдлрд╛рдЗрд▓реЗрдВ Xcode рдХреА рдЧрд╣рд░рд╛рдИ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред рдпрд╣рд╛рдБ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, UIKitCore рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкрде рд╣реИ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore

рд╣рдо рд╣реЙрдкрд░ рдореЗрдВ рдПрдХ рдбреНрд░реИрдЧ-рдПрдВрдб-рдбреНрд░реЙрдк рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рд╕рд┐рд╕реНрдЯрдо рдбрд╛рдпрд▓реЙрдЧ рдореЗрдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдордг рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ (UIKit рдХреЗ рд░реВрдк рдореЗрдВ рдЗрддрдиреЗ рдмрдбрд╝реЗ рдврд╛рдВрдЪреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЪрд╛рд░ рд╕реЗ рдЫрд╣ рдорд┐рдирдЯ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВ)ред

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдореИрдВ рдХреЗрд╡рд▓ рдЙрди рдкреНрд░рдореБрдЦ рддрддреНрд╡реЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреВрдВрдЧрд╛ рдЬреЛ рдореЗрд░реЗ рд╢реЛрдз рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдереЗред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдмрд╛рдПрдВ рдкреИрдирд▓ рдореЗрдВ рдЖрдк рдЦреЛрдЬ рд▓рд╛рдЗрди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдб рдХреЛ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд┐рд╕ рдХрдХреНрд╖рд╛ рдореЗрдВ рд╣рдо рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдЙрд╕рдХрд╛ рдирд╛рдо рдЦреЛрдЬрдХрд░, рд╣рдореЗрдВ рдЕрдзреНрдпрдпрди рдХреЗ рддрд╣рдд рдЬрд▓реНрджреА рд╕реЗ рдХрд╛рд░реНрдп рдорд┐рд▓рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдХреЛрдб рдХреЛрдб рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЦреБрд▓рддрд╛ рд╣реИред



рдКрдкрд░реА рдЯрд╛рд╕реНрдХ рдмрд╛рд░ рдореЗрдВ рдХреЛрдб рдбрд┐рд╕реНрдкреНрд▓реЗ рдореЛрдб рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЯрди рд╣реЛрддреЗ рд╣реИрдВред рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ:



  • рдПрдПрд╕рдПрдо рдореЛрдб - рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЛрдб;
  • рд╕реАрдПрдлрдЬреА рдореЛрдб - рдПрдХ рдмреНрд▓реЙрдХ рдЖрд░реЗрдЦ (рдкреЗрдбрд╝) рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЛрдб, рдЬрд╣рд╛рдВ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдмреНрд▓реЙрдХ рдореЗрдВ рд╕рдВрдпреБрдХреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдВрдХреНрд░рдордг рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ;
  • рдЫрджреНрдо рдХреЛрдб рдореЛрдб - рдЙрддреНрдкрдиреНрди рдЫрджреНрдо рдХреЛрдб (рд╣рдо рдиреАрдЪреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ);
  • рд╣реЗрдХреНрд╕ рдореЛрдб рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдлрд╝рд╛рдЗрд▓, рдпрд╛ рдЕрдмрд░рдХрджрд╛рдмрд░рд╛ рдХрд╛ рдПрдХ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рд╢реЛрдз рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЕрдм рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдЙрд╕рдХрд╛ рд╢рд░реАрд░ рдХрд╛рдлреА рд▓рдВрдмрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдПрд╕рдПрдо рдЧреБрд░реБ, рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдЦреБрдж рдирд╣реАрдВ рдмреБрд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡реЗ рдХреЛрдбрд╛рдВрддрд░рдг рдХреЛрдб рдХреЛ рджреЗрдЦрдХрд░ рддрд░реНрдХ рдХреЛ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдпреВрдбреЛ-рдХреЛрдб рдореЛрдб рдорджрдж рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╣реЙрдкрд░ рдЕрд╕реЗрдВрдмрд▓реА рдСрдкрд░реЗрд╢рди рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдореЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЬрд╣рд╛рдВ рд╕рдВрднрд╡ рд╣реЛ рдФрд░ рдЪрд░ рдирд╛рдо рдЬреИрд╕реЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



рдпрд╣ рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдФрд░ рдпрд╣ рд╕рдордЭрдирд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕рдХреА рдХрд┐рди рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯреНрд╕ рдиреЗ рдореЗрд░реА рдорджрдж рдХреАред, рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЪрд░ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ Xcode рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕рд░рд▓ рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдЬрд▓реНрджреА рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рд╕реЗ рдмрд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдмреНрд▓реЙрдХ рдореЗрдВ рд╢рд░реНрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИред

рдереЛрдбрд╝рд╛ рд╕рдВрджрд░реНрдн: рдЖрд░рдмреАрдПрдХреНрд╕ рдореЗрдВ рдХреЛрдб рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рджрд░реНрдЬ рдХрд░реЗрдВ (рдЬрд┐рд╕реЗ рдореИрдВ рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛) рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБ рдХрд╛ рд▓рд┐рдВрдХ рд╣реИ UITextInputTraits_Private(рдпрд╣ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ UITextInputTraits)ред

рддреЛ, рд╢рд░реНрддреЛрдВ рдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдЗрдирдкреБрдЯ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХреЗрдд рдЫрд┐рдкрд╛рдП рдирд╣реАрдВ рдЧрдП рд╣реИрдВред рдбрд┐рдмрдЧ рдореЗрдВ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЪрд▓ рд░рд╣рд╛ рд╣реИ: рд╕рдВрдкрддреНрддрд┐hidePredictionрдЭреВрдард╛ рд▓реМрдЯрддрд╛ рд╣реИред рджреВрд╕рд░реА рд╢рд░реНрдд рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдХреАрдмреЛрд░реНрдб "рд╕реНрдкреНрд▓рд┐рдЯ" рдореЛрдб рдореЗрдВ рдирд╣реАрдВ рд╣реИ (рдЖрдкрдХреЗ рдЖрдИрдкреИрдб рдкрд░, рдирд┐рдЪрд▓реЗ рджрд╛рдПрдВ рдмрдЯрди рдХреЛ рдКрдкрд░ рдЦреАрдВрдЪреЗрдВ , рдХреЗрд╡рд▓ 2-3% рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рдЪреАрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ)ред рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА, рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИред

рдЖрдЧреЗ рдмрдврд╝реЛред рдЕрдЧрд▓реЗ рдЪрд░рдг рдореЗрдВ, рдЬреЛрдбрд╝рддреЛрдбрд╝ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ keyboardType, рдЬреЛ рд╣рдореЗрдВ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдЪреНрдЪрд╛рдИ рдХрд╣реАрдВ рдЖрд╕-рдкрд╛рд╕ рд╣реИред рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди keyboardType0xb (рдпрд╛ рджрд╢рдорд▓рд╡ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ 11) рдХреЗ рдмрд░рд╛рдмрд░ рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо рд╣реИред рдпрджрд┐ рд╣рдо Xcode рдореЗрдВ рдШреЛрд╖рдгрд╛ рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ UIKeyboardType, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ 13 рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреАрдмреЛрд░реНрдб рд╣реИрдВ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ (UIKeyboardTypeAlphabet) рдХреЛ рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдкрджрд╛рд╡рдирдд рдФрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН, рдПрдиреБрдо рдореЗрдВ 12 рдкреНрд░рдХрд╛рд░ рд╣реИрдВ: рдпрджрд┐ рдЖрдк 0 рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмрд╛рдж рдореЗрдВ 11. рдХреЗ рдмрд░рд╛рдмрд░ рдореВрд▓реНрдп рд╣реЛрдЧрд╛ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдХреЛрдб рдПрдХ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдЪреЗрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдореВрд▓реНрдп рдХреЛ рдорд╛рдиреНрдп рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣, рдлрд┐рд░ рд╕реЗ, рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЧреБрдЬрд░рддрд╛ рд╣реИред

рдЖрдЧреЗ рд╣рдо рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрдЬреАрдм рд╕реНрдерд┐рддрд┐ рджреЗрдЦрддреЗ рд╣реИрдВ if (!COND), рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореИрдВ рд╕рдордЭ рдирд╣реАрдВ рд╕рдХрд╛ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣рд╛ рдерд╛, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдХреЛрдб рдореЗрдВ рдХрд╣реАрдВ рднреА COND рдЪрд░ рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд░реЗ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд╡рд┐рд░рд╛рдо рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓рддрд╛ рдареАрдХ рд╣реИ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдЬрд▓реНрджреА рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреА рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдПрд╕рдПрдо рдореЛрдб рдкрд░ рд▓реМрдЯрдиреЗ рдФрд░ рдХреЛрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдб рдХреЗ рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред

рдПрдПрд╕рдПрдо рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдореЗрдВ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк "рдиреЛ рдХреЛрдб рдбреБрдкреНрд▓реАрдХреЗрд╢рди" рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ pseudocode рдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЧрд░-рдФрд░ рд╢рд░реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЧреЛрдЯреЛ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдб рдФрд░ рд╕рдВрдХреНрд░рдордг рдХреЗ рдЕрдиреВрдареЗ рдмреНрд▓реЙрдХ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдПрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрди рдмреНрд▓реЙрдХреЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдХреА рд╕реНрдерд┐рддрд┐ рджреЗрдЦреЗрдВрдЧреЗ рдФрд░ рдПрдПрд╕рдПрдо рдореЛрдб рдореЗрдВ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реВрдЪрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЬрд┐рд╕ рдмреНрд▓реЙрдХ рдореЗрдВ рд╣рдо рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рд╡рд╣ fe79f4 рдкрд░ рд╕реНрдерд┐рдд рд╣реИ:



ASM рдореЛрдб рдкрд░ рд▓реМрдЯрдХрд░, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:



рд╣рдо рд╕рдмрд╕реЗ рдХрдард┐рди рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╣рдо рдХреЛрдбрд╛рдВрддрд░рдХ рдХреЛрдб рдХреА рддреАрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВрдЧреЗред

рдореИрдВрдиреЗ рдЕрдкрдиреА рд╕реНрдореГрддрд┐ рд╕реЗ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЛ рдкрд╣рдЪрд╛рдирд╛ (рдЕрдкрдиреЗ рдореВрд▓ MIET рдореЗрдВ рдХреЛрдбрд╛рдВрддрд░рдХ рдкрд╛рдареЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдЦрд┐рд░рдХрд╛рд░ рдореЗрд░реЗ рдЬреАрд╡рди рдореЗрдВ рд╡рд╣ рдХреНрд╖рдг рдЖ рдЧрдпрд╛ рд╣реИ рдЬрдм рдЙрдЪреНрдЪ рд╢рд┐рдХреНрд╖рд╛ рдХрд╛рдо рдореЗрдВ рдЖрдИ!)ред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ: рдирд┐рд░рдВрддрд░ 0x930 (рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ 100100110000) рдХреЛ рдПрдХреНрдЬрд┐рд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред

рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рд╣рдо bt рдЕрдиреБрджреЗрд╢ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рджреЗрдЦрдиреЗ excрдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ eaxред рдПрдХ рдХрд╛ рдореВрд▓реНрдп рдЬреЛ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ, рджреВрд╕рд░реЗ рдХрд╛ рдореВрд▓реНрдп рдкрд┐рдЫрд▓реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: rax = [rbx keyboardType]- рдЗрд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХреАрдмреЛрд░реНрдб рд╢рд╛рдорд┐рд▓ рд╣реИред rax- рдпрд╣ рдкреВрд░реЗ 64-рдмрд┐рдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рд╣реИ, eax- рдпрд╣ рдЗрд╕рдХрд╛ 32-рдмрд┐рдЯ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред

рддрдп рдХрд┐рдП рдЧрдП рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде, рдпрд╣ рдЯреАрдо рдХреЗ рддрд░реНрдХ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред Google рд╣рдореЗрдВ рдЗрд╕ рд╡рд┐рд╡рд░рдг рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ :
Selects the bit in a bit string (specified with the first operand, called the bit base) at the bit-position designated by the bit offset operand (second operand) and stores the value of the bit in the CF flag.

рдирд┐рд░реНрджреЗрд╢ рджреВрд╕рд░реЗ рдСрдкрд░реЗрдВрдб (рдХреАрдмреЛрд░реНрдб рдкреНрд░рдХрд╛рд░) рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд╣рд▓реЗ рдСрдкрд░реЗрдВрдб (рдирд┐рд░рдВрддрд░ 0x930) рд╕реЗ рдереЛрдбрд╝рд╛ рд╕рд╛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╕реАрдПрдл ( рдХреИрд░реА рдлреНрд▓реИрдЧ ) рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ ред рдпрд╣реА рд╣реИ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕реАрдПрдл рдореЗрдВ рдХреАрдмреЛрд░реНрдб рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ 0 рдпрд╛ 1 рд╣реЛрдЧрд╛ред

рд╣рдо рдЕрдВрддрд┐рдо рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ jb, рдЗрд╕рдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╡рд░рдг рд╣реИ :

Jump short if below (CF=1)

рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдлрдВрдХреНрд╢рди (рд╢реБрд░реБрдЖрддреА рдирд┐рдХрд╛рд╕) рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд░рдордг рд╣реИ рдпрджрд┐ рд╕реАрдПрдл 1 рд╣реИ

ред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдкрд╣реЗрд▓реА рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдереЛрдбрд╝рд╛ рд╕рд╛ рдореБрдЦреМрдЯрд╛ 100100110000 рд╣реИ (рдЗрд╕рдореЗрдВ рдХреАрдмреЛрд░реНрдб рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ 12 рдмрд┐рдЯреНрд╕ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ), рдФрд░ рдпрд╣ рдЬрд▓реНрджреА рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрдм, рдпрджрд┐ рд╣рдо рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреАрдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ rawValueрд╕рдм рдХреБрдЫ рдЬрдЧрд╣ рдореЗрдВ рд╣реЛрдЧрд╛ред



IOS 12 рдореЗрдВ, рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд░реНрдХ рдирд╣реАрдВ рдорд┐рд▓реЗрдВрдЧреЗ - рд╡рд╣рд╛рдВ рд╕рдВрдХреЗрдд рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреАрдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ iOS 13 рдореЗрдВ, Apple рдиреЗ рдбрд┐рдЬрд┐рдЯрд▓ рдХреАрдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдЬреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ: рдореИрдВ рдПрдХ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖ рд╕рдХрддрд╛, рдЬрд╣рд╛рдВ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдЧрд▓рддреА рд╕реЗ, рдПрдХ "рдЧрд░реНрдо рд╣рд╛рде" рднреА рд╣рд┐рдЯ рд╣реБрдЖ UIKeyboardTypePhonePad, рдЬреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдХреАрдкреИрдб рдХреЗ рд╕рдорд╛рди рд╣реИред рдЙрд╕реА рд╕рдордп UIKeyboardTypeNamePhonePad, рдЯреЗрд▓реАрдлреЛрди рд╕рдВрдкрд░реНрдХреЛрдВ рдФрд░ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рдбрд┐рдЬрд┐рдЯрд▓ рдХреАрдкреИрдб рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ QWERTY рдХреАрдмреЛрд░реНрдб рдХрд╛ рд╕рдВрдпреЛрдЬрди, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рдВрдХреЗрдд рджреЗрдирд╛ рдЬрд╛рд░реА рд░рдЦрд╛ред

рдореЗрд░реЗ рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рд▓рд┐рдП, рд╣реВрдкрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрдЦрдж рдФрд░ рдордиреЛрд░рдВрдЬрдХ рдирд┐рдХрд▓рд╛, рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореБрдЭреЗ рдЗрддрдирд╛ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдореИрдВрдиреЗ рдЕрдкрдиреА рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ Apple рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдХрд░реНрд╖ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛, рдФрд░ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рд╕рдордп рдХреЗ рд╕рд╛рде "рд╕рдВрднрд╛рд╡рд┐рдд рдлрд┐рдХреНрд╕ рдкрд╣рдЪрд╛рди - рднрд╡рд┐рд╖реНрдп рдХреЗ рдУрдПрд╕ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП" рдореЗрдВ рдмрджрд▓ рдЧрдИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЕрдкрдбреЗрдЯ рдореЗрдВ рдлрд┐рдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕реА рд╕рдордп, рд╣реЙрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рдпрд╛ рдРрдкреНрдкрд▓ рдмрдЧ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рдРрдкреНрдкрд▓ рдлрд╝рд┐рдХреНрд╕реЗрд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

All Articles