/
_58406EffectRenderer.cs
67 lines (54 loc) · 1.25 KB
/
_58406EffectRenderer.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
using System;
using System.Diagnostics;
using System.Linq;
using Android.Widget;
using Xamarin.Forms;
using Xamarin.Forms.Controls.Issues;
using Xamarin.Forms.Platform.Android;
[assembly: ExportEffect(typeof(Xamarin.Forms.ControlGallery.Android._58406EffectRenderer), Bugzilla58406.EffectName)]
namespace Xamarin.Forms.ControlGallery.Android
{
public class _58406EffectRenderer : PlatformEffect
{
protected override void OnAttached()
{
var tv = Control as TextView;
if (tv == null)
{
return;
}
ReverseText(tv, tv.Text);
tv.TextChanged += OnTextChanged;
}
bool _ignoreNextTextChange;
void OnTextChanged(object sender, global::Android.Text.TextChangedEventArgs textChangedEventArgs)
{
var tv = sender as TextView;
if (tv == null)
{
return;
}
if (_ignoreNextTextChange)
{
_ignoreNextTextChange = false;
return;
}
_ignoreNextTextChange = true;
ReverseText(tv, textChangedEventArgs.Text.ToString());
}
static void ReverseText(TextView tv, string text)
{
var rev = new string(text.Reverse().ToArray());
tv.Text = rev;
}
protected override void OnDetached()
{
var tv = Control as TextView;
if (tv == null)
{
return;
}
tv.TextChanged -= OnTextChanged;
}
}
}