1

我在 UITextView 内的 UIScrollView 内有一个 UITextView。我想向 UITextView 添加“缩放技能”。

我在 .h 文件中添加了 <...UIScrollViewDelegate> 。我将此添加到 .m 文件中。

@synthesize myTextView;
@synthesize scrollView;

- (void)scrollViewDidZoom:(UIScrollView *)sv
{
    float zoomScale = sv.zoomScale;
    if (zoomScale < 3)
    {
        if(zoomScale < 0.5)
        {
            UIFont* myFont = [UIFont systemFontOfSize:12];
            myTextView.font = myFont;
        }else{
            UIFont* myFont = [UIFont systemFontOfSize:(zoomScale * 12)];
            myTextView.font = myFont;
        }
        UIFont* myFont = [UIFont systemFontOfSize:36];
        myTextView.font = myFont;
    }
}

永远不会调用“scrollViewDidZoom”。

我使用界面生成器成功添加了这些对象。老实说,我有点失落。我不知道我应该如何创建出口和代表(具有 3 级层次结构)。

4

1 回答 1

1

我意识到使用 UIPinchGestureRecognizer 有一种简单的方法。

- (void)viewDidLoad
{
    //...
    UIPinchGestureRecognizer *pinchGest = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(changeTextViewFontSize:)];
    pinchGest.delegate = self;
    [myTextView addGestureRecognizer:pinchGest];
    [pinchGest release];
}

- (void)changeTextViewFontSize:(UIPinchGestureRecognizer *)p 
{
    CGFloat zoomVelocity = [(UIPinchGestureRecognizer *)p velocity];
    UIFont *font = self.myTextView.font;
    CGFloat pointSize = font.pointSize;
    NSString *fontName = font.fontName;

    pointSize = ((zoomVelocity > 0) ? 1 : -1) * 1 + pointSize;

    if (pointSize < 8) pointSize = 8;
    if (pointSize > 32) pointSize = 32;

    self.myTextView.font = [UIFont fontWithName:fontName size:pointSize];
}

谢谢阿拉尔巴尔干:http ://aralbalkan.com/3831/

于 2013-04-29T10:50:04.417 回答