Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 是否在键盘上方显示所有界面方向的文本字段?_Iphone - Fatal编程技术网

Iphone 是否在键盘上方显示所有界面方向的文本字段?

Iphone 是否在键盘上方显示所有界面方向的文本字段?,iphone,Iphone,实际上,在我的iPhone应用程序中,为了显示键盘上方的文本字段,我使用了以下代码来提升视图。我的应用程序支持所有四种接口方向。我使用以下代码来提升视图。这里的问题是,它只适用于纵向。有没有办法在所有四个方向上执行正确的提升 static const CGFloat KEYBOARD_ANIMATION_DURATION = 0.3; static const CGFloat MINIMUM_SCROLL_FRACTION = 0.2; static const CGFl

实际上,在我的iPhone应用程序中,为了显示键盘上方的文本字段,我使用了以下代码来提升视图。我的应用程序支持所有四种接口方向。我使用以下代码来提升视图。这里的问题是,它只适用于纵向。有没有办法在所有四个方向上执行正确的提升

    static const CGFloat KEYBOARD_ANIMATION_DURATION = 0.3;
    static const CGFloat MINIMUM_SCROLL_FRACTION = 0.2;
    static const CGFloat MAXIMUM_SCROLL_FRACTION = 0.8;
    static const CGFloat PORTRAIT_KEYBOARD_HEIGHT = 216;
    static const CGFloat LANDSCAPE_KEYBOARD_HEIGHT = 162;

    - (void)textFieldDidBeginEditing:(UITextField *)textField {
        UIInterfaceOrientation orientation =    [Globals getUIInterfaceOrientation];//[[UIApplication sharedApplication] statusBarOrientation];
        CGRect textFieldRect = [self.view.window convertRect:textField.bounds fromView:textField];
        CGRect viewRect = [self.view.window convertRect:self.view.bounds fromView:self.view];   

        CGFloat midline = textFieldRect.origin.y + 0.5 * textFieldRect.size.height;
        CGFloat numerator = midline - viewRect.origin.y - MINIMUM_SCROLL_FRACTION * viewRect.size.height;
        CGFloat denominator = (MAXIMUM_SCROLL_FRACTION - MINIMUM_SCROLL_FRACTION) * viewRect.size.height;   
        CGFloat heightFraction = numerator / denominator;

        if (heightFraction < 0.0) {
            heightFraction = 0.0;
        }
        else if (heightFraction > 1.0) {
            heightFraction = 1.0;
        }   
        if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown) 
            animatedDistance = floor(PORTRAIT_KEYBOARD_HEIGHT * heightFraction);
        else 
            animatedDistance = floor(LANDSCAPE_KEYBOARD_HEIGHT * heightFraction);
        CGRect viewFrame = self.view.frame;
        viewFrame.origin.y -= animatedDistance;
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationBeginsFromCurrentState:YES];
        [UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];
        [self.view setFrame:viewFrame];    
        [UIView commitAnimations];  
    }

    - (void)textFieldDidEndEditing:(UITextField *)textField{
        CGRect viewFrame = self.view.frame;
        viewFrame.origin.y += animatedDistance;
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationBeginsFromCurrentState:YES];
        [UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];
        [self.view setFrame:viewFrame];    
        [UIView commitAnimations];      
    }
静态常量CGFloat键盘\u动画\u持续时间=0.3;
静态常数CGFloat最小滚动分数=0.2;
静态常数CGFloat最大滚动分数=0.8;
静态常数CGFloat纵向键盘高度=216;
静态常数CGFloat横向键盘高度=162;
-(无效)textFieldDidBeginEditing:(UITextField*)textField{
UIInterfaceOrientation方向=[Globals getUIInterfaceOrientation];//[[UIApplication sharedApplication]statusBarOrientation];
CGRect textFieldRect=[self.view.window convertRect:textField.bounds fromView:textField];
CGRect viewRect=[self.view.window convertRect:self.view.bounds fromView:self.view];
CGFloat midline=textFieldRect.origin.y+0.5*textFieldRect.size.height;
CGFloat分子=中线-viewRect.origin.y-最小滚动分数*viewRect.size.height;
CGFloat分母=(最大滚动分数-最小滚动分数)*viewRect.size.height;
CGFloat heightFraction=分子/分母;
如果(高度分数<0.0){
高度分数=0.0;
}
否则如果(高度分数>1.0){
高度分数=1.0;
}   
如果(方向==UIInterfaceOrientationGraphital | |方向==UIInterfaceOrientationGraphitalUpsideDown)
动画距离=地板(纵向\键盘\高度*高度分数);
其他的
动画距离=地板(横向键盘高度*高度分数);
CGRect viewFrame=self.view.frame;
viewFrame.origin.y-=动画距离;
[UIView beginAnimations:nil上下文:NULL];
[UIView setAnimationBeginsFromCurrentState:是];
[UIView设置动画持续时间:键盘动画持续时间];
[self.view setFrame:viewFrame];
[UIView委员会];
}
-(void)textfielddidediting:(UITextField*)textField{
CGRect viewFrame=self.view.frame;
viewFrame.origin.y+=动画距离;
[UIView beginAnimations:nil上下文:NULL];
[UIView setAnimationBeginsFromCurrentState:是];
[UIView设置动画持续时间:键盘动画持续时间];
[self.view setFrame:viewFrame];
[UIView委员会];
}

您可以尝试将文本字段的
inputAccessoryView
属性设置为其自身。我没有尝试过,但理论上,它应该使文本字段连接到键盘,从而始终显示:

textField.inputAccessoryView = textField;

请看这篇文章。。[连结][1][1]: