在设置了它的nameDoubleAction和目标之后,当您双击一个名称时,ABPeoplePickerView的行为就像预期的那样。还有一个属性列-您可以在设计时在属性检查器中添加属性,如电子邮件和电话。它工作得相当好,甚至对于多值属性也是如此,比如一个人的多个电话号码。该外观表明,即使您碰巧在属性列中单击,双击也应该起作用。
然而,我发现在我的真实应用程序中,如果你双击属性栏,应用程序就会挂起。
// action called by double clicking on people picker or by OK button
- (IBAction)acnPickerDoubleClick:(id)sender {执行挂起于上一行,调试器报告EX_BAD_ACCESS,发送者为0x0。
我用最少的代码构建了四个测试应用程序。2和4工作正常,1和3崩溃如上所述。据我所知,3和4是相同的,都是在几分钟内创建的;代码只是从一个复制到另一个。然而,第一个崩溃了,第二个是正常的。唯一的区别可能是我在Xib中创建内容、添加AddressBook框架或编写#imports的顺序。
另一个荒谬之处是,我只需要导入AddressBook/AddressBook.h,编译器就可以接受这一行:
@property (strong) IBOutlet ABPeoplePickerView *picker;似乎也不需要导入AddressBook/ABPeoplePickerView.h,但如果不添加后者,我的真实应用程序将无法编译。
发布于 2014-10-14 08:33:00
我遇到了同样的问题,并通过将我的方法签名更改为:
- (IBAction)acnPickerDoubleClick:(id __unsafe_unretained)sender {它似乎起作用了。在调用操作时,选取器视图层次结构中的实际发送者不能停留足够长的时间。我之所以使用__unsafe_unretained,是因为我的目标是10.6+,但您也许可以在10.7+项目中使用__weak。
https://stackoverflow.com/questions/23960635
复制相似问题