Hi,
It looks like VSSpeechSynthesizer doesn't have a getter method for the
delegate, only a setter.
Try the following:
class MyDelegate : VSSpeechSynthesizerDelegate
{
override void DidFinishSpeaking(NSObject synth, bool success, IntPtr
error)
{
}
}
and then:
var del = new MyDelegate ();
var speech = new VSSpeechSynthesizer();
speech.WeakDelegate = del;
The support for using C# events cannot be used because it expects the
getter to work.
I hope this helps,
Rolf
On Mon, Jan 21, 2013 at 1:50 AM, alexgcuesoft <[email protected]>wrote:
> I have a research project for which I need TTS. I found that this
> functionality is found in a private framework. I understand that this
> preclude it from showing up on the App Store, which is fine...this app
> won't
> be going the app store.
>
> In any case, I'm having some issues getting the delegate properly
> registered. I'm getting the error message:
>
> 2013-01-20 17:29:48.338 BuildingNaviOS[9554:907] -[VSSpeechSynthesizer
> delegate]: unrecognized selector sent to instance 0x4493670
>
> when I try and subscribe to the event:
>
> speech = new VSSpeechSynthesizer();
> speech.DidFinishSpeaking += delegate( object
> sender,
> FinishSpeakingEventArgs args)
> {
> IsSpeaking = false;
> };
>
> the speech part of it is working and the phone is talking. I'm thinking
> that I'm missing something here in my bindings. Do I have to provide the
> complete delegate in order for it to register correctly? or will a partial
> delegate work? (i'm only interested in the finish speaking callback.)
>
> Here's my current definition...
>
> [BaseType(typeof (NSObject), Delegates = new string[] {
> "WeakDelegate" },
> Events=new Type [] { typeof (VSSpeechSynthesizerDelegate) })]
> public interface VSSpeechSynthesizer
> {
> [Static, Export("isSystemSpeaking")]
> bool IsSystemSpeaking { get; }
>
> [Export("rate")]
> float Rate();
>
> [Export("setRate:")]
> void SetRate(float rate);
>
> [Export("pitch")]
> float Pitch();
>
> [Export("setPitch:")]
> void SetPitch(float pitch);
>
> [Export("volume")]
> float Volume();
>
> [Export("setVolume:")]
> void SetVolume(float volume);
>
> [Export("startSpeakingString:")]
> void StartSpeakingString([NullAllowed]string text);
>
> [Export("stopSpeaking")]
> void StopSpeaking();
>
> [Export ("delegate"), NullAllowed]
> NSObject WeakDelegate { get; set; }
>
> [Wrap ("WeakDelegate"), NullAllowed]
> VSSpeechSynthesizerDelegate Delegate { get; set; }
> }
>
> [BaseType (typeof (NSObject))]
> public interface VSSpeechSynthesizerDelegate
> {
> [Export("speechSynthesizer:didFinishSpeaking:withError:"),
> EventArgs("FinishSpeaking")]
> void DidFinishSpeaking(NSObject synth, bool success,
> IntPtr error);
>
> [Export("speechSynthesizer:didEncounterSyncMessage:"),
> EventArgs("EncounterSyncMessage")]
> void DidEncounterSyncMessage(NSObject sync, string
> message);
>
>
> [Export("speechSynthesizer:didEncounterErrorAtIndex:ofString:message:"),
> EventArgs("EncounterError")]
> void DidEncounterErrorAtIndex(NSObject sync, int index,
> string text,
> string message);
>
> [Export("speechSynthesizer:willSpeakWord:ofString:"),
> EventArgs("SpeakWord")]
> void WillSpeakWord(NSObject sync, NSRange range, string
> text);
>
> [Export("speechSynthesizer:willSpeakPhoneme:"),
> EventArgs("SpeakPhoneme")]
> void WillSpeakPhoneme(NSObject sync, short code);
> }
>
>
> Any help is greatly appreciated!
>
> -Alex
>
>
>
>
> --
> View this message in context:
> http://monotouch.2284126.n4.nabble.com/Accessing-VSSpeechSynthesizer-engine-on-iPhone-tp4657969.html
> Sent from the MonoTouch mailing list archive at Nabble.com.
> _______________________________________________
> MonoTouch mailing list
> [email protected]
> http://lists.ximian.com/mailman/listinfo/monotouch
>
_______________________________________________
MonoTouch mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/monotouch