開いているキーボードを制御して、同時にテーブルビューをスクロールできるようにします。今私はテーブルビューをスクロールするためにキーボードを閉じる必要があります。キーボードが開いているときにテーブルビューをスクロールするにはどうしたらいいですか?
0
A
答えて
0
あなたはのviewDidLoadで通知を登録し、
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:nil];
は、単にキーボードの高さでテーブルビューのcontentInsetを調整し、あなたのviewWillDisappearに通知の登録を解除した後、下にセルをスクロール:
- (void)keyboardWillShow:(NSNotification *)aNotification
{
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);
self.myTableView.contentInset = contentInsets;
self.myTableView.scrollIndicatorInsets = contentInsets;
}
- (void)keyboardWillHide:(NSNotification *)aNotification
{
[UIView animateWithDuration:.3 animations:^(void)
{
self.myTableView.contentInset = UIEdgeInsetsZero;
self.myTableView.scrollIndicatorInsets = UIEdgeInsetsZero;
}];
}
0
キーボードが表示されているときに表示する必要がある場合の状態を処理するための基本ViewController
があります。あなたがしなければならないのは、BaseInputController
とoverride
showAnimation
とhideAnimation
を継承することです。それをテストするためにあなたの新しいコントローラを提示してください!
class BaseInputController: UIViewController, BaseInputProtocol {
private var blur: UIVisualEffectView!
init(){
super.init(nibName: nil, bundle: nil)
modalTransitionStyle = .CrossDissolve
modalPresentationStyle = .OverCurrentContext
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
deinit{
NSNotificationCenter.defaultCenter().removeObserver(self)
}
override func viewDidLoad() {
super.viewDidLoad()
setUI()
setNotification()
}
private func setUI(){
blur = UIVisualEffectView(effect: UIBlurEffect(style: .Dark))
blur.alpha = 0
view.addSubview(blur)
let tap1 = UITapGestureRecognizer(target: self, action: #selector(BaseInputController.cancelHandle))
blur.addGestureRecognizer(tap1)
blur.snp_makeConstraints { (make) in
make.edges.equalTo(view)
}
}
@objc private func cancelHandle(){
dismissViewControllerAnimated(
false,
completion: nil
)
}
private func setNotification(){
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(BaseInputController.keyBoardWillShow(_:)), name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(BaseInputController.keyBoardWillHide(_:)), name: UIKeyboardWillHideNotification, object: nil)
}
func keyBoardWillShow(note:NSNotification){
guard let userInfo = note.userInfo,
height = (userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.CGRectValue().size.height,
duration = userInfo[UIKeyboardAnimationDurationUserInfoKey] as? NSNumber
else{ return }
UIView.animateWithDuration(
duration.doubleValue,
delay: 0,
options: UIViewAnimationOptions(rawValue: UInt(duration.integerValue) << 16),
animations: {
self.blur.alpha = 1
self.showAnimation(height)
},
completion: nil
)
}
func showAnimation(height: CGFloat){
}
func keyBoardWillHide(note:NSNotification){
guard let userInfo = note.userInfo,
duration = userInfo[UIKeyboardAnimationDurationUserInfoKey] as? NSNumber
else{ return }
UIView.animateWithDuration(
duration.doubleValue,
delay: 0,
options: UIViewAnimationOptions(rawValue: UInt(duration.integerValue) << 16),
animations: {
self.blur.alpha = 0
self.hideAnimation()
},
completion: {
if $0 { self.dismissViewControllerAnimated(true, completion: nil) }
}
)
}
func hideAnimation(){
}
func hideInput(){
}
}
0
//キーボードに応じてテーブルビューを移動します。
CGPoint pointInTable = [textView.superview convertPoint:textView.frame.origin toView:self.tblEditTask];
CGPoint contentOffset = self.tblEditTask.contentOffset;
contentOffset.y = (pointInTable.y - textView.inputAccessoryView.frame.size.height);
NSLog(@"contentOffset is: %@", NSStringFromCGPoint(contentOffset));
[self.tblEditTask setContentOffset:contentOffset animated:YES];
関連する問題
- 1. キーボードを開くときにテーブルビューをスクロールします
- 2. キーボードを消すにはどうしたらいいですか?
- 3. キーボードが開いたときに線形レイアウトをスクロール可能にする
- 4. グリッドレイアウトでは、キーボードがxamarin.formsで開いているときにページをスクロールする方法は?
- 5. ポップアップが開いている間にテーブルビューのスクロールを無効にする
- 6. どのように私はキーボードが開いていることを知ることができます
- 7. キーボードが開いているときのビューの翻訳(スクロール表示なし)
- 8. キーボードがUiTextFieldを隠しているときにスクロール表示
- 9. キーボードが表示されているとスクロールできますか?
- 10. スクロール - モーダルが開いているときにセクションのスクロールを無効にする
- 11. キーボードがイオン性で開いているときにプログラム上で画面のスクロールを行う方法
- 12. モーダルが開いているときにスクロールできません。
- 13. スクロールできるようにアイテムを追加するにはどうしたらいいですか?
- 14. キーボードが開いているときにScrollViewが調整されなかった
- 15. IPadどのテキストフィールドが開いているかわからないキーボードを外す
- 16. サイドメニューが開いているときにiOSキーボードを隠すには?
- 17. キーボードが開いているとUIが上に移動する
- 18. キーボードが表示されているときにUITextViewがスクロールしない
- 19. キーボードが表示されたときにUITableViewControllerがスクロールしない
- 20. キーボードが開いているときにAndroidがフッターを移動する
- 21. キーボードが開いたときにナビゲーションバーが透明になる
- 22. 画像がスクロールしているテーブルビュー
- 23. VB6で開いているファイルをコピーするにはどうしたらいいですか?
- 24. スクロールするときにdivを上から表示するにはどうすればいいですか?
- 25. ユーザーがテーブルビューでスクロールしているときの変化をアニメーション化する
- 26. メニューが開いているときにiOSでスクロールを停止する
- 27. テーブルビューのセルをクリックして新しいビューを開くにはどうすればいいですか?
- 28. COM1を開いたままにして、COM1を閉じるにはどうしたらいいですか?
- 29. セルを展開するとテーブルビューが大きくならない
- 30. iOSでテーブルビューをスクロールするときにscrollToVisibleが機能しない
テーブルビューのセルにテキストフィールドを使用していますか? –