Skip to content
Permalink
Browse files

Fixed accesibility problem with <TextInput>'s Clear Button

Summary:
UITextView is accessible by default (some nested views are) and disabling that is not supported.

The problem happened because JS side sets `isAccessible` flag for UITextView and UITextField to `true` (with good intent!), which actually disables (surprise!) bult-in accessibility of TextInput on iOS.
On iOS accessible elements cannot be nested, so enabling accessibily for some container view (even in a case where this is view is a public API of TextInput on iOS) shadows some features implemented inside the component.

(Disabling accessibility of TextInput via `accessible=false` was never supported.)

Reviewed By: JoshuaGross

Differential Revision: D15280667

fbshipit-source-id: 72509b40383db6ef66c4263bd920f5ee56a42fc1
  • Loading branch information...
shergin authored and facebook-github-bot committed May 9, 2019
1 parent 078f14c commit 4e37d37cbff27e61659440094a662e00eafd8fc4
@@ -58,6 +58,15 @@ - (void)dealloc
[[NSNotificationCenter defaultCenter] removeObserver:self];
}

#pragma mark - Accessibility

- (void)setIsAccessibilityElement:(BOOL)isAccessibilityElement
{
// UITextView is accessible by default (some nested views are) and disabling that is not supported.
// On iOS accessible elements cannot be nested, therefore enabling accessibility for some container view
// (even in a case where this view is a part of public API of TextInput on iOS) shadows some features implemented inside the component.
}

- (NSString *)accessibilityLabel
{
NSMutableString *accessibilityLabel = [NSMutableString new];
@@ -43,6 +43,15 @@ - (void)_textDidChange
_textWasPasted = NO;
}

#pragma mark - Accessibility

- (void)setIsAccessibilityElement:(BOOL)isAccessibilityElement
{
// UITextField is accessible by default (some nested views are) and disabling that is not supported.
// On iOS accessible elements cannot be nested, therefore enabling accessibility for some container view
// (even in a case where this view is a part of public API of TextInput on iOS) shadows some features implemented inside the component.
}

#pragma mark - Properties

- (void)setTextContainerInset:(UIEdgeInsets)textContainerInset

1 comment on commit 4e37d37

@ericlewis

This comment has been minimized.

Copy link
Collaborator

commented on 4e37d37 May 9, 2019

ha! that is awesome!

Please sign in to comment.
You can’t perform that action at this time.