-1

我有这个实例方法,我试图概括最后一条语句来处理多个对象类:

-(void)showHTMLHelp:(NSString *)htmlString pointTo:(id)target background:(UIColor *)bgColor  

直到运行时我才知道目标对象是什么类。这是进行检查的代码(第二条语句导致构建错误):

    if([target isKindOfClass: [UITextField class]])
    [popoverController presentPopoverFromRect:(UITextField)&target.frame inView:self.view
                     permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

这是构建错误:

在“__strong id”类型的对象上找不到属性“框架”

为什么?我有一个正确的类,所有目标都有实际的“框架”(UITableView、UITextField 和 UITextView)。

4

2 回答 2

1
if([target isKindOfClass: [UITextField class]])
    [popoverController presentPopoverFromRect:((UITextField *)target).frame inView:self.view
                     permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
于 2013-04-11T21:59:46.013 回答
0

如果您的目标没有实际的框架(原点 x、原点 y、宽度、高度),则无法呈现PopoverFromRect,因为它不知道从哪里弹出。尝试

if([target isKindOfClass: [UITextField class]])
[popoverController presentPopoverFromRect::CGRectMake(0, 0, 100, 100) inView:self.view
                 permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

你的 CGRectMake 是你的(原点 x,原点 y,宽度,高度)

于 2013-04-11T21:49:55.033 回答