使用滑动关闭UITextField键盘

时间:2016-04-30 18:54:47

标签: ios swift keyboard uitextfield

我试图向下滑动键盘以解除它。我正在为我的键盘使用UITextField。我见过类似的问题;但是,他们使用的是UIScrollView / UITextView。用途:

scrollView.keyboardDismissMode = .Interactive

如何将其用于UITextField?谢谢你的帮助。

2 个答案:

答案 0 :(得分:4)

最简单的解决方案是使用滚动视图。只需在整个界面和繁荣后面放置滚动视图,即可完成所有设置。这种架构有太多优点,不能轻易拒绝。即使滚动视图没有正常滚动,用户也可以在键盘存在时使用它滚动(以便能够看到整个界面)。更重要的是,它滚动显示第一个响应者自动 - 再加上它会给你keyboardDismissMode

答案 1 :(得分:1)

UITextField不是UIScrollView的子类,它没有任何此类属性。无论如何,有一些解决方案,可以帮助你。

1. Dismiss keyboard by tapping Return button:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
      [self.view endEditing:YES];
}
  1. 将UISwipeGestureRecognizer的实例添加到视图控制器     并关闭

    //通过滑动事件键盘:

    @property(非原子,弱)IBOutlet UISwipeGestureRecognizer * swipeGesture;

  2. //在IB中设置其作为UISwipeGestureRecognizerDirectionDown的方向并连接IBAction:

    - (IBAction)gestureDidSwipe:(UISwipeGestureRecognizer *)gesture {
        if ([self.textField isFirstResponder]) {
            [self.textField resignFirstResponder];
        }
    }
    
    1. 创建一个UITextField类别,并在键盘上方添加一个带有“取消”按钮的工具栏:
    2. @implementation UITextField(attachCancelItem)

      - (void)attachDismissToolBar {
          UIToolbar *keyboardToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.bounds.size.width, 40.0f)];
          keyboardToolbar.barStyle = UIBarStyleBlackTranslucent;
          UIBarButtonItem *spaceBarItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
                                                                                        target:nil
                                                                                        action:nil];
          UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithTitle:[NSString localizedStringFromKey:@"selectAddressElementScreenDoneButtonTitle"] style:UIBarButtonItemStyleDone target:self action:@selector(resignFirstResponder)];
      
          [keyboardToolbar setItems:[NSArray arrayWithObjects:spaceBarItem, spaceBarItem, spaceBarItem, item, nil]];
          keyboardToolbar.tintColor = [UIColor whiteColor];
          self.inputAccessoryView = keyboardToolbar;
      }