/ / Получете достъп до UIView / UIWindow за синьото автоматично правилно поле - ios, какао-докосване, uikit

Получете достъп до UIView / UIWindow за малката синя кутия за автоматично коригиране - ios, cocoa-touch, uikit

Изглежда, че имате достъп до повечето изгледи / прозорци в iOS, но аз нямам много опит, така че се надявам някой да помогне.

В опит да разреша този въпрос, Имам няколко идеи, но те ще изискват от мен да използвам UIView за малкото синьо поле, което се показва, когато дума ще бъде автоматично коригирана.

Мисля, че трябва да започна с нещо подобно, но нямам идея откъде да отида оттук:

-(void) scrollViewDidScroll:(UIScrollView *)scrollView
{
NSArray *windows = [UIApplication sharedApplication].windows;
for (UIWindow *w in windows)
{
}
}

Добавям това като отделен въпрос, защото азможе да мисли за други причини човек може да иска да получи достъп до това (може би да промени цвета / стила?). Разбрах, че е част от "системата" и може би не е най-добрите практики за модифицирането й, но мисля, че това вероятно е добре, стига да не е решаваща част от приложението ви, и вие правите кода си доста безопасен (т.е. проверете указателите за нула, грешка от страна на безопасността) В моя случай засега просто искам да го скрия, когато трябва да бъде скрит (при превъртане).

Отговори:

0 за отговор № 1

След като разбрах, че UIWindow се получава от UIView, излязох с този възможен отговор, който изглежда работи досега:

-(void) walkViews:(UIView*)v
{
NSString *className = NSStringFromClass([v class]);
if([className isEqualToString:@"UIAutocorrectInlinePrompt"])
v.hidden = YES;
NSArray *subviews = v.subviews;
for(UIView *sv in subviews)
[self walkViews:sv];
}

-(void) scrollViewDidScroll:(UIScrollView *)scrollView
{
NSArray *windows = [UIApplication sharedApplication].windows;
for (UIWindow *w in windows)
{
[self walkViews:w];
}
}

Вместо този код да има в събитие за превъртане,можете да го поставите, където отговаря на вашите нужди. Основното е, че той обикаля всички подвидове, търсейки UIAutocorrectInlinePrompt. Вместо да го скриете, можете да направите всичко, което е необходимо за вашите конкретни нужди.