【问题标题】:textViewDidBeginEditing not firing due to zoomtextViewDidBeginEditing 由于缩放而未触发
【发布时间】:2009-06-17 21:26:49
【问题描述】:

我有一个 UIViewController 子类,它充当 UITextView 的委托。我实现了 textViewDidBeginEditing 以显示一个“完成”按钮来关闭文本视图......一切都很好......除了当文本视图有文本并且不处于编辑模式时,如果用户在文本视图中握住手指导致要使用放大镜缩放的文本,出现键盘但 textViewDidBeginEditing 不触发。

我试图通过实现 UIScrollView 委托方法 viewForZoomingInScrollView 和 scrollViewDidEndZooming 来解决这个问题,但我根本无法让它们为我触发。

我尝试使用 minimumZoomScale 和 maximumZoomScale 属性来禁用缩放...无济于事。

此时我不知道接下来要尝试什么,或者我无法捕获 UIScrollView 委托方法是否与我的主要问题有关。我不确定我可以发布哪些有价值的代码...... textViewDidBeginEditing 方法非常小,在正常情况下可以正常工作。 UITextView 委托分配是通过 Interface Builder 中与控制器(文件所有者)的连接进行的。

【问题讨论】:

    标签: iphone objective-c uitextview


    【解决方案1】:

    一种解决方法可能是注册键盘通知。一旦你这样做了,你就会知道键盘的确切显示时间。

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardNotificationShow:) name:UIKeyboardWillShowNotification object:nil];  
    
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardNotificationHide:) name:UIKeyboardWillHideNotification object:nil];  
    

    【讨论】:

    • 感谢您的建议...我对这个解决方法的问题是我在应用程序中有多个文本视图,我不确定如何确定是哪一个导致了通知。跨度>
    • 在添加检查 (self.view.window != NULL) 以确保控制器的视图正在显示后,这对我现在有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    相关资源
    最近更新 更多