рдЯрдЪ рд╕реНрдХреНрд░реАрди рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдорд┐рдореА рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрдЪ рд╕реНрдХреНрд░реАрди рдХреЛ рд╣рдЯрд╛ рджреЗрдВ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдПрдХ рдЙрдВрдЧрд▓реА рдХреЗ рд╕реНрдкрд░реНрд╢ рдХреЗ рднреМрддрд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдФрд░ рдЖрдИрдУрдПрд╕ рдореЗрдВ рдЙрдирдХреЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбрд┐рд╕реНрдкреНрд▓реЗ рдереЛрдбрд╝реЗ рдЕрд▓рдЧ рд╣реИрдВ: iOS рдПрдХ рдмрд┐рдВрджреБ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдкрд░реНрд╢ рд╕реЗ рд▓рдЧрднрдЧ 1.5 рдорд┐рдореА рдКрдкрд░ рдХреА рдУрд░ рд╡рд┐рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рдпреЛрдЬреНрдп рдХреЗ рд╣рд┐рддреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдирд╛рдЦреВрди рдХреЗ рдХрд░реАрдм рдПрдХ рдмрд┐рдВрджреБ рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдХреЗ рдиреАрдЪреЗ рдЭреВрда рдмреЛрд▓рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдХреНрд░реАрди рдХреНрд╖реЗрддреНрд░ рдЬрд╣рд╛рдВ рдЖрдк рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рдмреЗрд╣рддрд░ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореИрдВ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЖрдк рдХрд┐рд╕реА рднреА рдбреНрд░рд╛рдЗрдВрдЧ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреИрдореНрдмреВ рдкреЗрдкрд░ , рдПрдкреНрд▓рд┐рдХреЗрд╢рди isnтАЩt рдореЗрд░рд╛, рдореБрдлреНрдд ), рд╕реНрдХреНрд░реАрди рдСрдЯреЛ-рд░реЛрдЯреЗрдЯ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░реЗрдВ, рдПрдХ рдЫреЛрдЯреА рд╕реА рдХреНрд╖реИрддрд┐рдЬ рд░реЗрдЦрд╛ рдЦреАрдВрдЪреЗрдВ, рдлрд┐рд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЙрд▓реНрдЯрд╛ рдШреБрдорд╛рдПрдВ (рдСрдЯреЛ-рд▓реЙрдХ рдХреЛ рд▓реЙрдХ рдХрд░рддреЗ рд╕рдордп рдЖрд╡рд╢реНрдпрдХ) рдФрд░ рдЦреАрдВрдЪреА рдЧрдИ рд░реЗрдЦрд╛ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЬрд╛рд░реА рд▓рд╛рдЗрди рдореВрд▓ рд╕реЗ рдиреАрдЪреЗ рд╣реЛрдЧреАред

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

рдкрд╣рд▓реА рдкреАрдврд╝реА рдХреЗ рдЖрдИрдкреИрдб рдкрд░ рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╢рд┐рдлреНрдЯ рд▓рдЧрднрдЧ 7 рдкрд┐рдХреНрд╕рд▓ рдереАред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдкрд░рд┐рдгрд╛рдо рдЕрд▓рдЧ рд╣реЛрдЧрд╛, рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

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

рд╕реНрдХреЗрдЪреЗрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдмрд╕ рдЯрдЪрдореЗрд╡ рдХреЗ рддрд░реАрдХреЛрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд░реНрдХ рдореЗрдВ рд╕реБрдзрд╛рд░ рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { //... CGPoint point = [[touches anyObject] locationInView:self]; //    , ..  y    point.y = point.y + 7; //... } 

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

рдПрдХ рдХрдЯреНрдЯрд░рдкрдВрдереА рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдореИрдВрдиреЗ рдмрд┐рд▓реНрдХреБрд▓ рдЗрди рд╕рднреА рдХреЙрд▓реЛрдВ рдХреЗ рд╕рдВрд╢реЛрдзрди рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдпрд╛ рдерд╛ред
 #import "objc/runtime.h" @interface UITouch (Adjusted) -(CGPoint)adjustedLocationInView:(UIView *)view; -(CGPoint)adjustedPreviousLocationInView:(UIView *)view; @end @implementation UITouch (Adjusted) -(CGPoint)adjustedLocationInView:(UIView *)view{ CGPoint point = [self adjustedLocationInView:view]; point.y = point.y + 7; return point; } -(CGPoint)adjustedPreviousLocationInView:(UIView *)view{ CGPoint point = [self adjustedPreviousLocationInView:view]; point.y = point.y + 7; return point; } +(void)load{ Class class = [UITouch class]; Method locInViewMethod = class_getInstanceMethod(class, @selector(locationInView:)); Method adjLocInViewMethod = class_getInstanceMethod(class, @selector(adjustedLocationInView:)); method_exchangeImplementations(locInViewMethod, adjLocInViewMethod); Method prevLocInViewMethod = class_getInstanceMethod(class, @selector(previousLocationInView:)); Method adjPrevLocInViewMethod = class_getInstanceMethod(class, @selector(adjustedPreviousLocationInView:)); method_exchangeImplementations(prevLocInViewMethod, adjPrevLocInViewMethod); NSLog(@"UITouch class is adjusted now."); } @end 

рдпрд╣рд╛рдБ, рд░рдирдЯрд╛рдЗрдо рдлрдВрдХреНрд╢рди рдореЗрдердб_рдПрдХреНрд╕рдЪреЗрдВрдЬ рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдбрд┐рдлреЙрд▓реНрдЯ рдпреВрдЖрдИрдЯрдЪ рдореЗрдердб рдХреЗ рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯреЗрд╢рди рдХреЛ рдХрд░реЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХрд░рддреЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдирд┐рд░реНрдорд┐рдд рд╢реНрд░реЗрдгреА рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп .h рдпрд╛ .m рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдмрд╕ рдЗрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдФрд░ + рд▓реЛрдб рд╡рд┐рдзрд┐ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ + рд▓реЛрдб рд╕рдВрджреЗрд╢ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдФрд░ рд╢реНрд░реЗрдгреА рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
Updред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдирд┐рдХрд▓рд╛ , iOS 5 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, Apple рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ method_exchangeImplementations рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ ред рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд╡рд┐рдЪрд╛рд░реЗрдХ ред рдЗрд╕рд▓рд┐рдП, рд╕рдВрд╢реЛрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реБрдЭрд╛рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХред

рдЗрд╕рд▓рд┐рдП, рд╕рдВрд╢реЛрдзрди рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рдж, рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдп рд░реВрдк рд╕реЗ рдбреНрд░рд╛рдЗрдВрдЧ рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╢рддрд░рдВрдЬ рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛: рдЬрдм рдПрдХ рд╕реНрдкрд░реНрд╢ рдШрдЯрдирд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рджреГрд╢реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдкрд╛рд▓реА рдХреЗ рд╕рд╛рде рдПрдХ рдмрд┐рдВрджреБ рдЕрднреА рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╣рдо рдЧрд▓рдд рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд┐рд╕ рджреГрд╢реНрдп рдХреЛ рд╕реНрдкрд░реНрд╢ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд┐рдЯрдЯреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ : withEvent: UIView рдкрд░ рд╡рд┐рдзрд┐, рдЬреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддреА рд╣реИ:

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕реНрдкрд░реНрд╢ рдХреЗ рд▓рд┐рдП рд╢рддрд░рдВрдЬ рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣рд┐рдЯрдЯреЗрд╕реНрдЯ рдХреЛ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ : рд╕рднреА рд╕рдмрд╡реНрдпреВ рд╡рд╛рд▓реЗ рд░реВрдЯ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рд░реЛрдХреЗрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рд╕реБрдзрд╛рд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
 @implementation ChessBoardView - (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event { point.y = point.y + 7; UIView *hitView = [super hitTest:point withEvent:event]; return hitView; } @end 

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

Source: https://habr.com/ru/post/In131947/


All Articles