iphone - 如何在点击时更改 UIView 的样式?

标签 iphone objective-c xcode ios

我正在使用以下代码使不同的 UIView 可点击(它们不是从 UIControl 继承的):

UITapGestureRecognizer* gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(userTappedOnLink:)];
[labelView setUserInteractionEnabled:YES];
[labelView addGestureRecognizer:gesture];

但我也想在突出显示时更改样式。我该怎么做?

最佳答案

将 UILongPressGestureRecognizer 而不是 UITapGestureRecognizer 附加到父 View ,并根据您的喜好设置它的属性。跟踪和响应选择的方法是以适当的方式实现 userTappedOnLink 方法。当手势识别器被激活并且你通过跟踪识别器状态知道发生了什么时,这个方法将在短时间内被调用很多次。

实现 UIView 子类并创建方法,例如选择和取消选择,并为每个方法自定义 View 属性。然后只需找到要选择或取消选择哪个 UIView 子类,这很容易通过 UIGestureRecognizer 方法返回父 View 中的点并遍历它的 subview ,同时检查触摸点是否在特定 subview 框架内。

- (IBAction)userTappedOnLink:(UIGestureRecognizer*)sender
{

    switch (sender.state) 
    {
        case UIGestureRecognizerStateBegan:
{

        CGPoint touchPoint = [sender locationInView:self.parentView];
        for (UIView *subView in [self.parentView subViews) 
        {
            if (CGRectContainsPoint(subView.frame, tapPoint))
            {
                self.activeSubView = self.subview;
                            break;
            }
        }
                [self.activeSubView select];

        case UIGestureRecognizerStateChanged:[self.activeSubView doNothing];; break;
        case UIGestureRecognizerStateEnded:[self.activeSubView deSelect]; self.activeSubView = nil; break;
    }
}

关于iphone - 如何在点击时更改 UIView 的样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6006851/

相关文章:

iphone - iPad : Problem changing the background color of Grouped TableView in iOS SDK 4. 2

ios - GradientLayer 不水平填充 UIButton 边界

xcode - Apple 沙盒和 AXUIElementRefs

Swift - 通用函数参数

iphone - Facebook SDK FBLoginView 获取 EXC_BAD_ACCESS

IOS Swift- UITabBar 自定义标签栏在栏的开始和结束处留下空白

objective-c - 如何从货币代码中获取 NSLocale?

objective-c - ObjC 获取属性名称

ios - 在一个公共(public) View Controller 中显示另一个 View Controller ,如滑动菜单

java - 加密ios和android中的字符串并解密Web服务java