在UITextField上点击时,将UIButton移动到键盘上方

时间:2016-03-10 06:42:51

标签: ios objective-c keyboard-events

我有3个文本字段和2个按钮。当我点击文本字段时,键盘出现,并且由于键盘而隐藏了2个按钮。是否可以移动键盘上方的按钮,当键盘退出时,按钮应该回到初始位置。

4 个答案:

答案 0 :(得分:4)

//Declare a delegate, assign your textField to the delegate and then 

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
    return YES;
}


- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil];

    [self.view endEditing:YES];
    return YES;
}


- (void)keyboardDidShow:(NSNotification *)notification
{
    // Assign new frame to your view 
    [self.view setFrame:CGRectMake(0,-110,320,460)]; //here taken -20 for example i.e. your view will be scrolled to -20. change its value according to your requirement.

}

-(void)keyboardDidHide:(NSNotification *)notification
{
    [self.view setFrame:CGRectMake(0,0,320,460)];
}

编辑: - 使用[UIScreen mainScreen]界限为视图指定宽度和高度] .size

答案 1 :(得分:0)

执行此操作的最佳方法是使用库,这里是链接https://github.com/michaeltyson/TPKeyboardAvoiding,您需要做的就是在UIScrollView中获取所有文本字段和按钮,并在故事板中将scrollview类指定为“TPKeyboardAvoidingScrollView”。 /> 视图控制器类中将有零行代码来管理您的需求,无论您希望在整个应用程序中执行此操作,您都可以这样做。

答案 2 :(得分:-1)

是的,您可以更新查看框架/约束,以便向用户显示按钮。

此外,您可以创建一个工具栏,其中包含这些按钮。在聚焦文本字段时,您可以在键盘上方添加工具栏。

这将是更好的用户体验。

答案 3 :(得分:-1)

最好使用scrollview,或者为了方便起见,修改下面的代码。

  override func viewDidLoad() {
        super.viewDidLoad()


        let tapGesture = UITapGestureRecognizer(target: self, action: "tap:")
        view.addGestureRecognizer(tapGesture)
        self.txtUserEmail.delegate = self;
        self.txtPassword.delegate = self;

    }

   func tap(gesture: UITapGestureRecognizer) {
        self.txtUserEmail.resignFirstResponder()
        self.txtPassword.resignFirstResponder()
    }