我试图移动自动完成的桌面视图,因此它的顶部将触摸现场用户正在键入的底部边框。 为此,我进行了一些计算,然后在相应的字段上执行触地向下移动。
以下是3个出口变量,2个字段和1个表格视图:
@IBOutlet var tableRefresh:UITableView!
@IBOutlet weak var countriesFieldVar: UITextField!
@IBOutlet weak var countriesFieldVar2: UITextField!
以下是变量......
var field1YBottomCoordinate = 0
var tableXCenter = 0
var tableYCenter = 0
var field2YBottomCoordinate = 0
var differenceBetweenY = 0
....我在viewdidload中设置:
field1YBottomCoordinate = Int(CGRectGetMinY(countriesFieldVar.frame))
tableXCenter = Int(CGRectGetMidX(tableRefresh.frame))
tableYCenter = Int(CGRectGetMidY(tableRefresh.frame))
field2YBottomCoordinate = Int(CGRectGetMinY(countriesFieldVar2.frame))
differenceBetweenY = Int(field2YBottomCoordinate - field1YBottomCoordinate) + 1
然后,在触及countriesFieldVar2时,我执行此操作以将tableRefresh移动到所需位置:
@IBAction func coutriesField2SetSelect(sender: AnyObject) {
tableRefresh.center = CGPoint(x:tableXCenter, y: (tableYCenter + differenceBetweenY))
}
问题是,在第一次触摸countriesFieldVar2字段时,没有任何反应。或者说是正确的,我简单地看到桌子在键盘向上移动时闪烁到所需的位置,然后桌子向后移回原来的位置。只有在场上第二次接触才能得到理想的动作。这是为什么 ? (请使用swift)
答案 0 :(得分:1)
这里有一些代码可以强制重试计时器和bool
aTimer = [NSTimer scheduledTimerWithTimeInterval:.5 target:self selector:@selector(tryAgain) userInfo:nil repeats:YES];
-(void)tryAgain{
if (!checkBool){
[self buttonPressed:];
}
}
-(IBAction) buttonPressed:(id) sender{
//First fill in code here
checkBool = YES;
[aTimer invalidate];
}