使用UITextView和内容大小缩放

时间:2010-07-14 22:02:05

标签: iphone cocoa-touch

这个问题是similar to this one,但希望由于我尝试了一些东西,它会引起更多的兴趣。

我正在尝试在UITextView中进行标准的捏合滚动。我的委托实现UITextViewDelegate并实现此方法

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    return self;
}

[实际上这可能是错误的,但返回[[self subviews] objectAtIndex:0]没有改变任何事情(奇怪的是)。

所以捏合的东西可以工作,但是当有缩放时,UITextView实例会失去允许我正确平移内容的所有概念。我试图通过包含这个方法来解决这个问题

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale {
    CGSize size = self.contentSize;
    size.width *= scale;
    size.height *= scale;
    self.contentSize = size;
}

但所有这些猜测并没有让我走得太远(毫不奇怪)。

编辑:我做过这样的事情,除了它稍微爆炸之外,它不是我想要的。这是action的{​​{1}}方法:

UIPincheGestureRecognizer

2 个答案:

答案 0 :(得分:3)

我知道这是旧的,但我最近遇到了麻烦所以希望这有助于某人:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
      for(UIView *subView in self.subviews)
      {
         if([subView isKindOfClass:[UIWebDocumentView class]])
            return subView;
      }
      return [self.subviews lastObject];
}

答案 1 :(得分:0)

添加此项将为缩放添加许多连贯性。你也可以调整文字宽度,我现在要研究它:

- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view {
    frameBeforeZooming = self.frame;
}

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale {
    self.frame = frameBeforeZooming;
}

显然你需要在标题中定义一个CGRect。