在Monotouch中有没有一种方法可以从IntPtr中获取ABPerson对象?我使用的是ABPeoplePickerNavigationController及其ABPeoplePickerNavigationControllerDelegate。我必须读取方法ShouldContinue中选定的person的一些属性。我的代码如下所示:
ABPeoplePickerNavigationController nc = new ABPeoplePickerNavigationController();
nc.Delegate = new CustomABPeoplePickerNavigationControllerDelegate();我的自定义委托如下所示:
public class CustomABPeoplePickerNavigationControllerDelegate : ABPeoplePickerNavigationControllerDelegate
{
public override bool ShouldContinue (ABPeoplePickerNavigationController peoplePicker, IntPtr selectedPerson)
{
// *** HERE I HAVE TO GET ABPerson FROM IntPtr ***
peoplePicker.DismissModalViewControllerAnimated(false);
return true;
}
} 发布于 2011-08-08 20:01:35
遗憾的是,接受IntPtr的ABPerson构造函数在MonoTouch中是内部的。您可以执行以下任一操作:
但是您不能使用继承来解决这个问题,因为基础(ABRecord) .ctor也是内部的。
我会看看为什么这个.ctor是内部的(很多这样的.ctor在MonoTouch中是公开的),如果可能的话(即如果没有替代的话),在即将发布的版本中修复这个问题。
编辑:的进一步阅读建议您在ABPeoplePickerNavigationController上使用SelectPerson事件。这将使用内部委托,该委托将把IntPtr转换为ABPerson实例,从而解决您的问题:)
发布于 2011-08-08 17:16:04
我还没有尝试过,但你可以:
ABPerson person = peoplePicker.AddressBook.SingleOrDefault(s => s.Handle == selectedPerson) as ABPerson;https://stackoverflow.com/questions/6979846
复制相似问题