MKAnnotation - Выноска канцелярской кнопки открывается позади других канцелярских кнопок

Мои канцелярские кнопки могут быть вполне плотно заполнены так, чтобы, когда контакт выбран, выноска открылась, но была главным образом затенена всеми другими канцелярскими кнопками - я могу принести Канцелярскую кнопку к передней стороне это, там был делегат к выбранной канцелярской кнопке (не коснувшаяся выноска, выбранный контакт).

Какие-либо предложения для работы вокруг?

7
задан user160462 22 September 2009 в 04:04
поделиться

2 ответа

Попробуйте:

Time.parse(target_date) + curr_time.sec + curr_time.min * 60 + curr_time.hour * 60 * 60
=> Sat Apr 17 19:30:34 +0200 2010

Вы получите DateTime с датой от target_date и временем от curr_time.

-121--3060836-

Лусеро имеет право, но я хочу добавить объяснение почему это правильно.

Для ссылочных типов в .Net оператор = означает ссылочное равенство; две переменные относятся к одному и тому же экземпляру объекта?

Метод .Equals (), с другой стороны, предназначен для указания значения равенства; имеют ли два (вероятно) разных экземпляра объекта одно и то же значение для определенного определения «одинаковых», которое вы обычно можете предоставить для своих типов?

Представление -121--3632107-

UICallout является подчиненным представлением MIAnnotationView. Таким образом, я думаю, что если вы перенесете карту ping на передний план, то там будет и UITYlloutView.

1
ответ дан 7 December 2019 в 16:44
поделиться

Если вы используете пользовательские представления аннотаций, вы можете добавить наблюдателя для выбранного свойства, который будет действовать как делегат при выборе булавки.

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
    MKAnnotation *annview = ...code to either dequeue or create new object...
    [annview addObserver:self forKeyPath:@"selected" options:NSKeyValueObservingOptionNew context:@"selectedmapannotation"];               
    return annview;
}

, затем вы можете отслеживать выбранное состояние с помощью

- (void)observeValueForKeyPath:(NSString *)keyPath
                  ofObject:(id)object
                    change:(NSDictionary *)change
                   context:(void *)context;

. Ответ, на который ссылается Мугунт Кумар, также даст вам желаемые результаты, просто вы упомянули о функциональности делегата в своем вопросе.

РЕДАКТИРОВАТЬ:

Вот пример содержимого ObjectValueForKeyPath: ofObject: change: context: method

NSString *action = (NSString*)context;

if([action isEqualToString:@"selectedmapannotation"]){
    BOOL annotationAppeared = [[change valueForKey:@"new"] boolValue];
    MKAnnotationView *ann = (MKAnnotationView *)object;

    if (annotationAppeared) {
        // do something with the annotation when it is selected
    }
    else {
        // do something with the annotation when it is de-selected
    }
}
2
ответ дан 7 December 2019 в 16:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: