我的代码遇到了问题.我正在尝试移动UIScrollView当我正在编辑时UITextField应该被键盘弹出隐藏.
我现在正在移动主框架,因为我不知道如何在代码中"向上滚动".所以,我做了一些代码,它工作正常但是当我编辑一个UItextfield并且我切换到另一个UITextField而没有按下"返回"按钮时,主视图变得非常了不起.
我NSLog()用变量大小,距离和textFieldRect.origin.y 做了一个,如下所示.当我把两个UITextField放在同一个地方(y原点)并且我做这个特别的'开关'(没有按回车)时,我得到相同的数字,而我的代码在第一次UITextField编辑时工作正常但不适用于第二次编辑.
看一下这个:
- (void)textFieldDidBeginEditing:(UITextField *)textField {
{
int size;
CGRect textFieldRect = [self.view.window convertRect:textField.bounds fromView:textField];
size = textFieldRect.origin.y + textFieldRect.size.height;
if (change == FALSE)
{
size = size - distance;
}
if (size < PORTRAIT_KEYBOARD_HEIGHT)
{
distance = 0;
}
else if (size > PORTRAIT_KEYBOARD_HEIGHT)
{
distance = size - PORTRAIT_KEYBOARD_HEIGHT + 5; // +5 px for more visibility
}
NSLog(@"origin %f", textFieldRect.origin.y);
NSLog(@"size %d", …Run Code Online (Sandbox Code Playgroud) TextField我的主箱里有七个ContentView。当用户打开键盘时,其中一些TextField隐藏在键盘框架下。所以TextField当键盘出现时,我想分别向上移动。
我已使用以下代码TextField在屏幕上添加。
struct ContentView : View {
@State var textfieldText: String = ""
var body: some View {
VStack {
TextField($textfieldText, placeholder: Text("TextField1"))
TextField($textfieldText, placeholder: Text("TextField2"))
TextField($textfieldText, placeholder: Text("TextField3"))
TextField($textfieldText, placeholder: Text("TextField4"))
TextField($textfieldText, placeholder: Text("TextField5"))
TextField($textfieldText, placeholder: Text("TextField6"))
TextField($textfieldText, placeholder: Text("TextField6"))
TextField($textfieldText, placeholder: Text("TextField7"))
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
我有这个UITableView几乎填满了我的整个UIViewController,我在底部有一个包含按钮和文本字段的UIView.
当我单击文本字段时,我希望UIView和tableview向上推,这样UIView就在键盘顶部.
- UIView:
- UITextField
- UIButton
Run Code Online (Sandbox Code Playgroud)
我在这里尝试了多个建议,但似乎没有一个在我的情况下有用.
ios ×3
iphone ×2
objective-c ×2
cocoa-touch ×1
scrollview ×1
swift ×1
swiftui ×1
uitableview ×1
xcode ×1