我试图将CGFloat与整数值进行比较。基于此值,执行条件...漂亮标准。但是,出于某种原因,这总是正确的。我甚至打印出值,它们显然小于800 ....我尝试了一堆不同的组合,最近的显示如下,我想也许是比较浮点数的大小和基于int的大小纯粹基于它的二进制值,所以我尝试了这个冒险的小型演员操作......任何想法?
CGPoint textViewPoint = [scroller convertPoint:[textView center] toView:(UIView *)self.view];
NSLog(@"the y coord is %f", textViewPoint.y);
int size = (int)textViewPoint.y;
NSLog(@"the yint %d", size);
//move the main view, so that the keyboard does not hide it.
//if (self.scroller.frame.origin.y >= 0 && textViewPoint.y > 800.0);
if(size > 800);
{
NSLog(@"moving up");
答案 0 :(得分:4)
问题是;
行末尾的if(size > 800);
,而不是int与float的比较。删除它,一切都应该没问题。
这是因为这个分号被解释为if
语句的主体,这是条件为真时执行的NO-OP语句。然后,此if
空主体旁边的其余代码位于if
主体之外,因此无论条件值如何都会执行。这就像你写的那样:
if(size > 800)
{
}
{
NSLog(@"moving up");
}
编译器通常会警告您这个错误。确保您在项目构建设置(编译器标记-Wempty-body
)中激活了“空循环体”警告:这样下次出现此错误时,您将收到警告关于它,并将知道什么是错的以及如何解决它。