2016-07-28 27 views
0

Ich möchte Voice to Text-Taste auf der Tastatur in Xamarin Formen sowohl für Android und iOS deaktivieren.Wie kann ich die Voice to Text-Schaltfläche (Dictation-Schaltfläche) auf der Tastatur in Xamarin Forms deaktivieren?

Meine Frage ist, muss ich benutzerdefinierte Rendern implementieren, wie ich generischen Code für Android und iOS nicht finden konnte.

Ich habe unten Link für die Implementierung in nativen iOS

Disable Dictation button on the keyboard of iPhone 4S/new iPad

Irgendwelche Vorschläge würden sehr geschätzt gefunden. Sie können auch vorschlagen, native Plattform Ansätze, die ich in Xamarin replizieren kann Forms

Danke

+0

Sie müssen einen benutzerdefinierten Renderer verwenden, da die Tastatur plattformspezifisch ist. – BytesGuy

+0

Vielen Dank für Ihre Antwort, ja ich tat das, ich hatte benutzerdefinierte Renderer erstellt und es funktioniert für Android mit PrivateImeOptions = "nm" -Eigenschaft und versuchen für iOS jetzt und ich bin mir nicht sicher, welche Eintragseigenschaft ich verwenden sollte, um Diktat Schaltfläche zu deaktivieren –

Antwort

0

Schließlich hatte ich dies erreicht durch Gewohnheit machen für Textbox und Textbereich (Herausgeber) zu schaffen, unter Code für mich gearbeitet.
In Formularen habe ich diese Klasse erstellt.

using Xamarin.Forms; 

namespace CustomRenderer 
{ 
    public class MyEntry : Entry 
    { 
    } 
} 

In Android erstellte ich benutzerdefinierte Render für MyEntry.

using Xamarin.Forms.Platform.Android; 
using Xamarin.Forms; 
using CustomRenderer; 
using CustomRenderer.Android; 

[assembly: ExportRenderer (typeof(MyEntry), typeof(MyEntryRenderer))] 
namespace CustomRenderer.Android 
{ 
    class MyEntryRenderer : EntryRenderer 
    { 
     protected override void OnElementChanged (ElementChangedEventArgs<Entry> e) 
     { 
      base.OnElementChanged (e); 

      if (Control != null) { 
       Control.SetBackgroundColor (global::Android.Graphics.Color.LightGreen); 
       Control.PrivateImeOptions = "nm"; 
      } 
     } 
    } 
} 

Unten Render für iOS.

using Xamarin.Forms.Platform.iOS; 
using Xamarin.Forms; 
using UIKit; 
using CustomRenderer; 
using CustomRenderer.iOS; 

[assembly: ExportRenderer (typeof(MyEntry), typeof(MyEntryRenderer))] 
namespace CustomRenderer.iOS 
{ 
    public class MyEntryRenderer : EntryRenderer 
    { 
     protected override void OnElementChanged (ElementChangedEventArgs<Entry> e) 
     { 
      base.OnElementChanged (e); 

      if (Control != null) { 
       // do whatever you want to the UITextField here! 
       Control.BackgroundColor = UIColor.FromRGB (204, 153, 255); 
       Control.BorderStyle = UITextBorderStyle.Line; 
       Control.KeyboardType = UIKeyboardType.EmailAddress; 
      } 
     } 
    } 
} 

In XAML hatte ich folgende Syntax.

<?xml version="1.0" encoding="UTF-8" ?> 
<ContentPage 
    xmlns="http://xamarin.com/schemas/2014/forms" 
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
    xmlns:local="clr-namespace:CustomRenderer;assembly=CustomRenderer" 
    x:Class="CustomRenderer.MainPageXaml"> 
    <StackLayout VerticalOptions="CenterAndExpand" HorizontalOptions="CenterAndExpand"> 
     <Label Text="Hello, Custom Renderer!" /> 
     <local:MyEntry Text="In Shared Code" /> 
    </StackLayout> 
</ContentPage> 

Mit obigen Ansatz hatte ich erfolgreich die Diktat-Taste iOS und Android-Tastaturen deaktiviert.