Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«iOS. ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 96

Автор Π’Π°Π½Π΄Π°Π΄ Нахавандипур

if (error!= nil){

/* Π—Π΄Π΅ΡΡŒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΠ² ΠΎΠΊΠ½ΠΎ

с ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ */

return;

}


MKDirectionsRequest *request = [[MKDirectionsRequest alloc] init];

request.source = [MKMapItem mapItemForCurrentLocation];


/* ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΊΡƒ назначСния CoreLocation Π² ΠΌΠ΅Ρ‚ΠΊΡƒ MapKit */

/* ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΊΡƒ адрСса назначСния*/

CLPlacemark *placemark = placemarks[0];

CLLocationCoordinate2D destinationCoordinates =

placemark.location.coordinate;

MKPlacemark *destination = [[MKPlacemark alloc]

initWithCoordinate: destinationCoordinates

addressDictionary: nil];


request.destination = [[MKMapItem alloc]

initWithPlacemark: destination];


/* ΠœΡ‹ собираСмся ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² Ρ‚ΠΎΡ‡ΠΊΡƒ назначСния Π½Π° Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ */

request.transportType = MKDirectionsTransportTypeAutomobile;


/* ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ направлСния */

MKDirections *directions = [[MKDirections alloc]

initWithRequest: request];

[directions calculateDirectionsWithCompletionHandler:

^(MKDirectionsResponse *response, NSError *error) {


/* ΠœΠΎΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ синтаксичСский Ρ€Π°Π·Π±ΠΎΡ€ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ°, Π½ΠΎ Π·Π΄Π΅ΡΡŒ ΠΌΡ‹

поступим ΠΈΠ½Π°Ρ‡Π΅ ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Maps (ΠšΠ°Ρ€Ρ‚Ρ‹) Π΄Π»Ρ отобраТСния

Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ Ρ‚ΠΎΡ‡Π΅ΠΊ. Π”Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Π²Ρ‹Π·ΠΎΠ² API Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ,

Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π°Π½Π΅Π΅ ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»ΠΈ элСмСнты ΠΊΠ°Ρ€Ρ‚Ρ‹. ΠΠΎ здСсь Π²Ρ‹Π·ΠΎΠ²

дСлаСтся Π² дСмонстрационных цСлях. ΠœΡ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ΅

с направлСниями содСрТится Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ информация ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ

Ρ‚ΠΎΡ‡ΠΊΠ°Ρ… */

/* ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ направлСния Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Maps */

[MKMapItem

openMapsWithItems:@[response.source, response.destination]

launchOptions:@{

MKLaunchOptionsDirectionsModeKey:

MKLaunchOptionsDirectionsModeDriving}];

}];

}];


self.window = [[UIWindow alloc]

initWithFrame: [[UIScreen mainScreen] bounds]];

// Π’ΠΎΡ‡ΠΊΠ° пСрСопрСдСлСния для Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ настройки послС запуска прилоТСния

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}


Π― Π·Π°ΠΏΡƒΡ‰Ρƒ это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² симуляторС iOS, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ выбранная ΠΌΠ½ΠΎΠΉ конСчная Ρ‚ΠΎΡ‡ΠΊΠ° находится слишком Π±Π»ΠΈΠ·ΠΊΠΎ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ мСста, Π³Π΄Π΅ я Π½Π°Ρ…ΠΎΠΆΡƒΡΡŒ (Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ). Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ получится ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊ Π½Π° рис. 9.5.


Рис. 9.5. ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

Π Π°Π·Π΄Π΅Π» 9.3.

Π“Π»Π°Π²Π° 10. РСализация распознавания ТСстов

10.0. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

ЖСст (Gesture) β€” это комбинация событий касания. ЖСсты ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² стандартном ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Photo (Π€ΠΎΡ‚ΠΎ) для iOS. Π’ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡŽ, двигая двумя ΠΏΠ°Π»ΡŒΡ†Π°ΠΌΠΈ Π² Ρ€Π°Π·Π½Ρ‹Π΅ стороны ΠΈΠ»ΠΈ навстрСчу Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ. НСкоторыС ΠΎΠ±Ρ€Π°Π·Ρ†Ρ‹ ΠΊΠΎΠ΄Π°, Ρ‡Π°Ρ‰Π΅ всСго примСняСмого для обнаруТСния событий, связанных с ТСстикуляциСй, инкапсулированы Π²ΠΎ встроСнныС классы iOS SDK, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ для ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования. Π­Ρ‚ΠΈ классы ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ для обнаруТСния смахивания (Swipe), Ρ‰ΠΈΠΏΠΊΠ° (Pinch), панорамирования (Pan), наТатия (Tap), пСрСтаскивания (Drag), Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ наТатия (Long Press) ΠΈ вращСния (Rotation).

РаспознаватСли ТСстов Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊ экзСмплярам класса UIView. Один Π²ΠΈΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ связан с нСсколькими распознаватСлями ТСстов. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΈΠ΄ рСгистрируСт ТСст, ΠΏΡ€ΠΈ нСобходимости ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ТСст Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π²ΠΈΠ΄Π°ΠΌ, располоТСнным Π½ΠΈΠΆΠ΅ Π² иСрархичСской Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅.

НСкоторыС события, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ прилоТСния, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ слоТны для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ событиС ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π»ΠΎΡΡŒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΠ΄Π°Ρ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ взятого прилоТСния. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² распознаватСлях ТСстов, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹Ρ… для ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования. Π’ iOS SDK 5 ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ распознаватСли ΡˆΠ΅ΡΡ‚ΠΈ ТСстов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ:

β€’ ΡΠΌΠ°Ρ…ΠΈΠ²Π°Π½ΠΈΠ΅;

β€’ Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅;

β€’ Ρ‰ΠΈΠΏΠΎΠΊ;

β€’ ΠΏΠ°Π½ΠΎΡ€Π°ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅;

β€’ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅;

β€’ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅.


ΠžΠ±Ρ‰ΠΈΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ТСстов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих встроСнных распознаватСлСй Ρ‚Π°ΠΊΠΎΠ².

1. Π”ля Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ распознаватСля ТСстов создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Π°Π½Π½Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

2. Π­Ρ‚ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ добавляСтся Π² качСствС распознаватСля ТСстов ΠΊ Ρ‚ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ТСсты.

3. ΠŸΠΈΡˆΠ΅Ρ‚ся ΠΌΠ΅Ρ‚ΠΎΠ΄, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ТСста ΠΈ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π²Π°ΠΌΠΈ дСйствиС.

ΠœΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ассоциируСтся Π² качСствС Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с Π»ΡŽΠ±Ρ‹ΠΌ распознаватСлСм ТСстов, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ пСрСчислСнным Π΄Π°Π»Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ:

β€’ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ void;

β€’ Π»ΠΈΠ±ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ СдинствСнный ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΈΠΏΠ° UIGestureRecognizer, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ систСма Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚Π΅Π»ΡŒ ТСстов, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

Рассмотрим Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:


β€” (void) tapRecognizer:(UITapGestureRecognizer *)paramSender{

/* */

}


β€” (void) tapRecognizer{

/* */

}


РаспознаватСли ТСстов дСлятся Π½Π° Π΄Π²Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ: дискрСтныС (Discrete) ΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹Π΅ (Continuous). ДискрСтныС распознаватСли ТСстов Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ связанныС с Π½ΠΈΠΌΠΈ события ТСстов, Π° послС этого Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² своСм ΠΎΠ±Π»Π°Π΄Π°Ρ‚Π΅Π»Π΅. НСпрСрывныС распознаватСли ТСстов ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‚ своСму ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ-ΠΎΠ±Π»Π°Π΄Π°Ρ‚Π΅Π»ΡŽ ΠΎ ТСстС Π½Π° протяТСнии всСго Ρ‚ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΠΊΠ° этот ТСст осущСствляСтся, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² своСм Ρ†Π΅Π»Π΅Π²ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅, ΠΏΠΎΠΊΠ° это событиС Π½Π΅ закончится.

НапримСр, событиС Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ наТатия являСтся дискрСтным. Π₯отя ΠΎΠ½ΠΎ ΠΈ состоит ΠΈΠ· Π΄Π²ΡƒΡ… Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ, систСма ΡƒΠ»Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π±Ρ‹Π» ΠΎΡ‡Π΅Π½ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ ΠΈ ΠΎΠ±Π° наТатия ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ΅ событиС. Π Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚Π΅Π»ΡŒ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ наТатия Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π² своСм Ρ†Π΅Π»Π΅Π²ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΡƒΠ΄Π΅Ρ‚ зарСгистрировано Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅.

Π’Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², обрабатываСтся Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΌ распознаватСлСм ТСстов. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ€Π°Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ТСст, начинаСтся ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° распознаватСля, Π° оканчиваСтся этот ТСст, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΎΡ‚Ρ€Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ°Π»ΡŒΡ†Ρ‹ ΠΎΡ‚ экрана. ΠœΠ΅Ρ‚ΠΎΠ΄, прСдоставляСмый классу распознаватСля Π²Ρ€Π°Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ТСстов, вызываСтся с ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°ΠΌΠΈ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° событиС Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ.

РаспознаватСли ТСстов ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ экзСмпляру класса UIView с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° addGestureRecognizer:, относящСгося ΠΊ Π²ΠΈΠ΄Ρƒ. ΠŸΡ€ΠΈ нСобходимости распознаватСли ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ removeGestureRecognizer:.

Π£ класса UIGestureRecognizer Π΅ΡΡ‚ΡŒ свойство ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ state. Бвойство state прСдставляСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ состояния распознаватСля ТСстов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² Ρ…ΠΎΠ΄Π΅ распознавания. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π²Π°Π΅ΠΌΡ‹Ρ… состояний Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρƒ дискрСтных ΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹Ρ… распознаватСлСй ТСстов.

ДискрСтный Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚Π΅Π»ΡŒ ТСстов ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Ρ‚Ρ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… состояния:

β€’ UIGestureRecognizerStatePossible;

β€’ UIGestureRecognizerStateRecognized;

β€’ UIGestureRecognizerStateFailed.


Π’ зависимости ΠΎΡ‚ ситуации дискрСтный Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚Π΅Π»ΡŒ ТСстов ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ своСй Ρ†Π΅Π»ΠΈ ΠΎ состоянии UIGestureRecognizerStateRecognized Π»ΠΈΠ±ΠΎ ΠΎ состоянии UIGestureRecognizerStateFailed, Ссли Π² процСссС распознавания Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка.

НСпрСрывныС распознаватСли ТСстов ΠΏΡ€Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π²Π°ΡŽΡ‚ ΠΈΠ½ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ состояний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‚ своим цСлям:

β€’ UIGestureRecognizerStatePossible;

β€’ UIGestureRecognizerStateBegan;

β€’ UIGestureRecognizerStateChanged;

β€’ UIGestureRecognizerStateEnded;

β€’ UIGestureRecognizerStateFailed.

БостояниС распознаватСля ТСстов мСняСтся Π½Π° UIGestureRecognizerStatePossible Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚Π΅Π»ΡŒ собираСт Π² Π²ΠΈΠ΄Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ событиях касаний ΠΈ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠΉ Π΅Π³ΠΎ ТСст. ΠšΡ€ΠΎΠΌΠ΅ Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Ρ… состояний Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ распознаватСля ТСстов ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΈ состояниС UIGestureRecognizerStateCancelled, Ссли ТСст ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ прСрываСтся. НапримСр, ТСст панорамирования ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅Ρ€Π²Π°Π½ входящим Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½Ρ‹ΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚Π΅Π»ΡŒ ТСстов ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚ Π² состояниС UIGestureRecognizerStateCancelled ΠΈ пСрСстанСт ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ-ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŽ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ сообщСния, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ всю ΠΆΠ΅ΡΡ‚ΠΎΠ²ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, Ссли Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΉ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Ρ‚Π΅Π»ΡŒ ТСстов столкнСтся с ситуациСй, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ удаСтся Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Ρƒ систСмы возмоТностСй, Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ состояниС UIGestureRecognizerStateFailed, Π° Π½Π΅ UIGestureRecognizerStateEnded.

10.1. ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ТСстов смахивания

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

НСобходимо ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΊΠΎΠ»ΡŒΠ·ΡΡ‰ΠΈΠ΅ ТСсты смахивания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ осущСствляСт Π½Π° Π²ΠΈΠ΄Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° ΡƒΠ±ΠΈΡ€Π°Π΅Ρ‚ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ с ΠΎΠΊΠ½Π°.

РСшСниС

Π˜Π½ΡΡ‚Π°Π½Ρ†ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° UISwipeGestureRecognizer ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π΅Π³ΠΎ ΠΊ экзСмпляру UIView:


#import Β«ViewController.hΒ»


@interface ViewController ()

@property (nonatomic, strong)

UISwipeGestureRecognizer *swipeGestureRecognizer;

@end


@implementation ViewController